有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正在对MockitoAnnotations返回的对象调用close()。OpenLocks(对象)是必需的吗?

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

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 Mockito注释时都会出现AFAIK。openMocks(本);再次初始化var对象,所以在每次测试方法之后使用close()方法没有任何意义


共 (1) 个答案

  1. # 1 楼答案

    The documentation说:

    If static method mocks are used, it is required to close the initialization. Additionally, if using third-party mock-makers, other life-cycles might be handled by the open-release routine.

    所以不,如果你不关闭模拟,测试在任何情况下都不会失败,但在某些情况下这是必要的,所以任何通用测试框架都应该确保close()