У меня есть класс java, полный методов void, и я хочу сделать несколько unit test, чтобы получить максимальный охват кода.
Например, у меня есть этот метод:
protected static void checkifValidElements(int arg1, int arg2) {
method1(arg1);
method2(arg1);
method3(arg1, arg2);
method4(arg1, arg2);
method5(arg1);
method6(arg2);
method7();
}
Его плохо назвали по причине, потому что я перевел код для лучшего понимания. Каждый метод проверяет, являются ли аргументы каким-то образом и хорошо написаны.
Пример:
private static void method1(arg1) {
if (arg1.indexOf("$") == -1) {
//Add an error message
ErrorFile.errorMessages.add("There is a dollar sign in the specified parameter");
}
}
My unit test отлично маскирует мелкие методы, потому что я прошу их проверить, содержит ли ErrorFile сообщение об ошибке, но я не вижу, как я могу проверить свой метод checkIfValidElements, он ничего не возвращает или ничего не изменяет. Когда я запускаю покрытие кода с помощью Maven, он сообщает мне, что unit test doesent охватывает эту часть моего класса.
Единственное, что я вижу, это изменить этот метод, чтобы вернуть значение int или bollean, например:
protected static int checkifValidElements(int arg1, int arg2) {
method1(arg1);
method2(arg1);
method3(arg1, arg2);
method4(arg1, arg2);
method5(arg1);
method6(arg2);
method7();
return 0;
}
С помощью этого метода я могу сделать утверждение равным, но мне кажется, что это бесполезно. Проблема в том, что у меня есть пара классов, которые разработаны таким образом и уменьшают покрытие unit test%.