【问题标题】:How to unit-test function that uses global variable?如何对使用全局变量的函数进行单元测试?
【发布时间】:2016-10-24 10:05:59
【问题描述】:

假设你有一堂课

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

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

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

【问题讨论】:

    标签: android unit-testing mocking powermockito


    【解决方案1】:

    您可以使用 PowerMock 绕过封装

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 它比我的例子复杂得多。字符串的唯一启动 - 是服务器响应。而且我需要在不询问服务器的情况下对其进行测试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 2021-07-16
      • 2018-11-29
      • 2016-05-28
      相关资源
      最近更新 更多