Java 将静态初始化块与Mockito一起使用

Java 将静态初始化块与Mockito一起使用,java,unit-testing,testing,mockito,Java,Unit Testing,Testing,Mockito,我开始用Mockito作为我的mocking framemork。我尝试用它来模拟一些自定义类: //usage @Mock private LoginAttempt loginAttempt; 以及LoginAttest类: 但是当我调试我的测试用例时,loginattent变量是空的。我做错了什么 我在教程中看到,我应该这样做: private static LoginAttempt loginAttempt = new LoginAttempt(); 但是如果我想预先初始化一些字段值呢

我开始用Mockito作为我的mocking framemork。我尝试用它来模拟一些自定义类:

//usage
@Mock
private LoginAttempt loginAttempt;
以及LoginAttest类:

但是当我调试我的测试用例时,loginattent变量是空的。我做错了什么

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

private static LoginAttempt loginAttempt = new LoginAttempt();
但是如果我想预先初始化一些字段值呢


编辑我的LoginAttent不为null,但我在静态块中分配的值未初始化。

虽然知道Mock和Spy之间的区别很好,但真正的原因在于下面的编辑。否则,请参阅以了解有关差异的更多信息

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

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

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

这似乎与莫基托无关。如果在任何一个方法中检查LoginAttest.LoginAttest.os的值会发生什么情况?什么是TEST_GLOBALS?它的拼写类似于常量,但使用起来却不像常量。@LewBloch是一个包含常量的类。@DawoodibnKareem我今天在Job之后尝试了它,这就是我要找的。我一检查就接受答案。@DawoodibnKareem您是对的,他丢失了启用mockito注释的注释RunWith。
@RunWith(MockitoJUnitRunner.class)
public class LoginAttemptTest {
    @Mock
    LoginAttempt loginAttempt;

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