gpt4 book ai didi

java - 在@BeforeAll 注释方法中使用 JUnit 5 运行的测试中,Mockito 不会初始化模拟

转载 作者:行者123 更新时间:2023-12-04 12:16:03 26 4
gpt4 key购买 nike

Mockito 不会在 @BeforeAll 注释方法中使用 JUnit 5 初始化模拟运行。
如果我将 init 方法注释更改为 @BeforeEach,它会起作用。测试在 IntelliJ IDEA 中运行。
我的测试课:

@ExtendWith(MockitoExtension.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class MyTest {

private MyMockedClass myMockedClass;

@BeforeAll
public void init() {
when(myMockedClass.getSomething()).thenReturn(something); // Mock is not initialized, getting NPE on test
依赖关系(仅显示相关的,为简洁起见省略了其他的):
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ XXX ---
[INFO] +- org.mockito:mockito-core:jar:3.6.28:test
[INFO] | +- net.bytebuddy:byte-buddy:jar:1.10.18:compile
[INFO] | +- net.bytebuddy:byte-buddy-agent:jar:1.10.18:test
[INFO] | \- org.objenesis:objenesis:jar:3.1:test
[INFO] +- org.mockito:mockito-junit-jupiter:jar:3.6.28:test
[INFO] | \- org.junit.jupiter:junit-jupiter-api:jar:5.7.0:test
[INFO] | +- org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] | +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] | \- org.junit.platform:junit-platform-commons:jar:1.7.0:test
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.4.1:test
[INFO] | +- org.junit.jupiter:junit-jupiter:jar:5.7.0:test
[INFO] | | +- org.junit.jupiter:junit-jupiter-params:jar:5.7.0:test
[INFO] | | \- org.junit.jupiter:junit-jupiter-engine:jar:5.7.0:test
[INFO] | | \- org.junit.platform:junit-platform-engine:jar:1.7.0:test

最佳答案

MockitoExtension类实现了 BeforeEachCallback但不是 BeforeAllCallback来自 JUnit-Jupiter-API。因此它不会为 @BeforeAll 提供任何额外的行为。注释的方法。
MockitoExtension 的来源摘录

public class MockitoExtension implements BeforeEachCallback, AfterEachCallback, ParameterResolver {

关于java - 在@BeforeAll 注释方法中使用 JUnit 5 运行的测试中,Mockito 不会初始化模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65543399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com