在google上搜索,如何在单元测试中模拟变量并看到一些建议,对于我的情况它不起作用。我的情景是,
class Keys {
private static Keys sKeys;
private String enKey = null;
static synchronized sKeys getInstance() {
if(sKeys == null) {
sKeys = new Keys();
}
return sKeys;
}
Boolean isLocked() {
if(enKey == null ) {
return true;
}
return false;
}
}
这是我写的课程。该课程的单元测试如下,
@RunWith(MockitoJUnitRunner.class)
public class KeysTest {
@Test
public void isLocked_Test() {
Keys key = Keys.getInstance();
Key.isLocked();
// Here in isLocked function I want to mock the enKey value to other than null
}
}
在这里,我想调用isLocked函数,我想将 enKey 变量值设置或模拟为null以外的其他值。
我怎么能这样做? 有人可以帮我吗?
答案 0 :(得分:0)
请为您的字段添加访问者方法,否则您的代码将与测试驱动开发不兼容。如果你有一个像'getEnkeys()'这样会返回'enKey'的方法,你就可以轻松地模拟方法'getEnKeys',使用任何模拟框架返回不同的值。例如,使用 mockito :Mockito.when(key.getEnkeys()).thenReturn("someValue");
如果你真的想要使用当前的实现,那么尝试使用@InjectMocks
注释和实例变量以及一些初始化方法(如
@Before public void initMocks() {
MockitoAnnotations.initMocks(this);
}