繁体   English   中英

如何对使用全局变量的函数进行单元测试?

[英]How to unit-test function that uses global variable?

假设你有一堂课

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

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

如何使用不同的字符串值测试此方法? 该字符串没有设置器,也不包含在构造函数中。 我无法更改代码。 我有电源模拟。 这个问题很简单,但找不到解决方法。 谢谢。

您可以使用PowerMock绕过封装

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

通常,通过测试实际使用这些私有方法的公共方法来测试这些类型的方案。 通常,请尝试测试使string1变量发生突变的流程,然后依次测试您的私有方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM