Java 是否对MockitoAnnotations返回的对象调用close()。openMocks(对象)是必需的?
我想对MockitoAnnotations.openMocks(对象)返回的对象调用close()是否是必需的?如果答案是肯定的,我为什么要叫它? 假设我们有这样一个例子:Java 是否对MockitoAnnotations返回的对象调用close()。openMocks(对象)是必需的?,java,mockito,Java,Mockito,我想对MockitoAnnotations.openMocks(对象)返回的对象调用close()是否是必需的?如果答案是肯定的,我为什么要叫它? 假设我们有这样一个例子: public class MockitoAnnotationsOpenMocksTest { @Mock private Foo var; @BeforeMethod public void before() { MockitoAnnotations.openMocks(this); } @Test public
public class MockitoAnnotationsOpenMocksTest {
@Mock
private Foo var;
@BeforeMethod
public void before() {
MockitoAnnotations.openMocks(this);
}
@Test
public void foo() {
Mockito.when(var.name()).thenReturn("foo");
System.out.println("test foo" + ", var name " + var.name());
}
@Test
public void foo2() {
System.out.println("test foo2" + ", var name " + var.name());
}
private class Foo {
String name() {
return "";
}
}
}
使用testng结果运行它是:
[RemoteTestNG] detected TestNG version 6.14.2
test foo, var name foo
test foo2, var name null
PASSED: foo
PASSED: foo2
PASSED: foo2
每次调用@BeforeMethod MockitoAnnotations.openMocks时都会出现AFAIK(这是);再次初始化var对象,所以在每次测试方法之后使用close()方法没有任何意义。说:
如果使用静态方法模拟,则需要关闭初始化。此外,如果使用第三方模拟生成器,其他生命周期可能由开放发布例程处理
因此,如果不关闭模拟,测试在所有情况下都不会失败,但在某些情况下是必要的,因此任何通用测试框架都应该确保close()