Возможный дубликат: Что наилучшим способом частного тестирования отдельных методов?
Я начинающий программист, и я не знаю, как написать приложение, которое будет хорошо структурировано для модульного тестирования. Я хочу писать приложения с возможностью добавления эффективных модульных тестов.
Проблема заключается в методах private
- они не могут тестироваться вне их классов.
Должен ли я решить эту проблему, изменив все методы, от private
до protected
, и пусть тестовый класс расширяет класс источника? Или есть лучшее решение?
Мое решение (private splitLetters = > protected splitLetters) будет работать следующим образом:
Класс источника:
class MyClass{
protected splitLetters(int num){
return num+2;
}
}
Класс тестирования:
class Test_MyClass extend MyClass{
public splitLettersTest(){
for(int i=0;i<100;i++){
System.println(parent.splitLetters(i));
}
}
}
Решения:
-
Не тестировать частные методы. Иногда частный метод выполняет очень сложные задачи, которые должны быть проверены очень хорошо, и мы не хотим, чтобы у этого пользователя был доступ к этим методам. Вскоре решение изменяет частные методы на защищенные.
-
Вложенный способ класса для тестирования - проблематично, поскольку QA вносит изменения в исходный код
-
Отражение. Если это позволяет вызвать частные методы, это выглядит как отличное решение http://www.artima.com/suiterunner/private3.html (Я должен узнать больше, чтобы понять рефлексию. Я не понимаю, как отражения не нарушают идею создания публичных и частных методов, если мы можем вызвать частные методы из другого класса.)
-
Не определять частные методы (как я показал в своем решении) - проблематично, потому что иногда нам приходится определять частный метод.