我在私有方法中有一个switch case语句。 I don't think we need to do unit testing for the private method.但是我的代码覆盖率工具(EclEmma)显示“缺少4个分支中的1个”。在开关声明上带有黄色菱形。所以我的问题是:如何为这种特殊情况编写测试?

代码段

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

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

最佳答案

因此,您可以尝试使用反射,如下所示:

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

08-18 11:48
查看更多