Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否对MockitoAnnotations返回的对象调用close()。openMocks(对象)是必需的?_Java_Mockito - Fatal编程技术网

Java 是否对MockitoAnnotations返回的对象调用close()。openMocks(对象)是必需的?

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

我想对MockitoAnnotations.openMocks(对象)返回的对象调用close()是否是必需的?如果答案是肯定的,我为什么要叫它? 假设我们有这样一个例子:

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()