使用Mockito的静态初始化块

时间:2017-04-23 22:13:10

标签: java unit-testing testing mockito

我开始使用Mockito作为我的嘲弄框架。我尝试用它来模拟一些自定义类:

//usage
@Mock
private LoginAttempt loginAttempt;

LoginAttempt类:

public class LoginAttempt {
    private static LoginAttempt loginAttempt;

    static {
        loginAttempt = new LoginAttempt();
        loginAttempt.setOs(TEST_GLOBALS.OS);
        loginAttempt.setBrowser(TEST_GLOBALS.BROWSER);
        loginAttempt.setDevice(TEST_GLOBALS.DEVICE);
        loginAttempt.setOsVersion(TEST_GLOBALS.OS_VERSION);
        loginAttempt.setBrowserVersion(TEST_GLOBALS.BROWSER_VERSION);
    }
...

但是当我调试我的测试用例时,loginAttempt var是空的。我做错了什么?

我在教程中看到,我应该做这样的事情:

private static LoginAttempt loginAttempt = new LoginAttempt();

但是如果我想预先初始化一些字段值呢?

编辑我的loginAttempt不为空,但我在静态块中指定的值未初始化。

1 个答案:

答案 0 :(得分:1)

虽然了解Mock和Spy之间的区别很好,但真正的原因在于下面的编辑。否则请参阅What is the difference between mocking and spying when using Mockito?以获取有关差异的更多信息。

编辑:我注意到你缺少注释以在类上启用mockito:

@RunWith(MockitoJUnitRunner.class)
public class LoginAttemptTest {
    @Mock
    LoginAttempt loginAttempt;

    @Test
    public void testObjectExistence() {
        System.out.println("loginAttempt="+loginAttempt);
    }
}