如何使用全局变量进行单元测试?

时间:2016-06-22 12:45:47

标签: android unit-testing mocking powermockito

假设你有一个班级

class NeedToTestThisClass{
    private String string1;
    ....
    ....

    private void needToTestThisMethod(){
        if(string1.equals("a")){
            ...
        }
        else{
            ....
            }
   }
}

如何使用不同的字符串值测试此方法?该字符串没有setter,也没有包含在构造函数中。我无法更改代码。 我有力量。 问题很简单,但无法弄清楚方法。感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用PowerMock绕过封装

@Test
public void test() {
     NeedToTestThisClass tested = new NeedToTestThisClass();
     WhiteBox.setInternalState(tested,"string1", "someValue");
     Whitebox.invokeMethod(tested, "needToTestThisMethod");
     //here verify something
} 

答案 1 :(得分:1)

通常,通过测试实际使用这些私有方法的公共方法来测试这些类型的方案。一般来说,尝试测试改变string1变量的流程,然后通过测试来触及私有方法。

相关问题