在单元测试android中模拟变量

时间:2018-04-19 16:41:05

标签: android unit-testing mockito android-testing

在google上搜索,如何在单元测试中模拟变量并看到一些建议,对于我的情况它不起作用。我的情景是,

SELECT encode(column_name, 'escape') FROM table_name;

这是我写的课程。该课程的单元测试如下,

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;
  }
}

在这里,我想调用isLocked函数,我想将 enKey 变量值设置或模拟为null以外的其他值。

我怎么能这样做? 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

要模拟静态,您需要使用PowerMock或类似的库。

请参阅this问题和解答。

或者,您可以在重构静态设计(如果需要)后使用下面描述的方法。

使用Mockito创建模拟,

MyClass myMock = Mockito.mock(MyClass.class);

要为模拟类设置特定函数的返回值,

when(myMock.myFunc()).thenReturn(desiredValue);

请务必同时查看documentation