2016-06-22 56 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

它比我的例子要複雜得多。唯一啓動的字符串 - 是服務器響應。我需要在不詢問服務器的情況下測試它。 –