2016-06-22 59 views
0

假设你有一个类如何使用全局变量的单元测试函数?

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

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

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

回答

3

您可以使用PowerMock绕过封装

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

通常,通过测试实际使用这些类型私有方法的公共方法来测试这些类型的方案。一般来说,试着测试一下改变string1变量的流程,并让你的私有方法被测试所触及。

+0

它比我的例子要复杂得多。唯一启动的字符串 - 是服务器响应。我需要在不询问服务器的情况下测试它。 –