2014-09-26 49 views
0

在私有方法中有一個switch case語句。 I don't think we need to do unit testing for the private method.但我的代碼覆蓋工具(EclEmma)顯示「錯過了4個分支中的1個」。在switch語句中帶有黃色菱形。所以我的問題是:如何爲這種特殊情況編寫測試?在私有方法中編寫switch語句的測試用例

代碼段

public void parentMethod() { 
    .... 
    childMethod(someList); 
    .... 
} 

private void childMethod(List<Integer> someList) { 
    for(Integer var : someList) { 
    switch(var){ ..... } 
    } 
} 
+4

用於執行私有方法的所有代碼路徑的公共方法的測試用例。 – 2014-09-26 17:57:28

+0

你如何發送/設置你的var是switch case變量? – StackFlowed 2014-09-26 17:57:31

+0

var是基於某種邏輯在childMethod()內部設置的。 – 2014-09-26 18:18:11

回答

1

所以,你可以嘗試使用反射,這樣的事情:

MyClass myClass = new MyClass(); 
List<Integer> input = Arrays.asList(1, 2, 3); 

Method method = MyClass.class.getDeclaredMethod("childMethod", List.class); 
method.setAccessible(true); 
method.invoke(myClass, input); 
.... 

有關技術途徑良好的聯繫,用於測試的私有方法或一般不測試:

http://saturnboy.com/2010/11/testing-private-methods-in-java/

http://www.artima.com/suiterunner/privateP.html

相關問題