我开始以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
不为null,但是我在静态块中分配的值未初始化。 最佳答案
虽然很高兴知道Mock和Spy之间的区别,但真正的原因是在下面的编辑中。否则,请参见What is the difference between mocking and spying when using Mockito?以获取有关差异的更多信息。
编辑:我注意到您缺少在类上启用模仿的注释:
@RunWith(MockitoJUnitRunner.class)
public class LoginAttemptTest {
@Mock
LoginAttempt loginAttempt;
@Test
public void testObjectExistence() {
System.out.println("loginAttempt="+loginAttempt);
}
}