Написание тестового примера для оператора switch внутри частного метода

У меня есть оператор case switch внутри частного метода. Я не думаю, что нам нужно проводить модульное тестирование для частного метода. Но мой инструмент покрытия кода (EclEmma) показывает "пропущена 1 из 4 ветвей". с желтым ромбом на переключателе. Итак, мой вопрос: как я могу написать тест для этой конкретной ситуации?

Фрагмент кода

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

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

person αƞjiβ    schedule 26.09.2014    source источник
comment
С тестовыми примерами для общедоступного метода, которые проверяют все пути кода частного метода.   -  person Oliver Charlesworth    schedule 26.09.2014
comment
Как вы отправляете/устанавливаете свою переменную, которая является переменной case переключателя?   -  person StackFlowed    schedule 26.09.2014
comment
var устанавливается внутри childMethod() на основе некоторой логики.   -  person αƞjiβ    schedule 26.09.2014
comment
emma.sourceforge.net/faq.html#q.fractional.examples может быть полезно.   -  person Carl Manaster    schedule 26.09.2014


Ответы (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

person Alexey Semenyuk    schedule 26.09.2014