Я пытаюсь определить лучший способ написать тестовый код. Вот мой кодпишущий тестируемый код в этом сценарии
class FileReader {
private FileInputStream input;
public FileReader(FileInputStream input) {
this.input = input;
}
public void read() throws IOException {
Row row = readHeaderRow();
Row[] rows = readOtherRowsBasedOnHeader(row);
doSomethingElse(rows);
}
private void readHeaderRow() {
//..
}
private void readOtherRowsBasedOnHeader(Row row) {
//..
}
private void doSomethingElse(Row[] rows) {
//..
}
}
Как вы можете видеть выше, только метод read() является общедоступным. Остальные методы являются частными. Должен ли я просто оставлять частные методы из тестирования? Или имеет смысл делать все методы общедоступными и делать то, что делает read() в вызывающем коде?
Вы не должны публиковать или закрывать методы для написания проверяемого кода. Вы всегда можете использовать Reflection для тестирования частных методов вашего класса. – vk239
Тестирование фреймворков, таких как Junit/TestNG, поддерживает такое тестирование на основе отражения из коробки? – Jay
Вот ссылка, в которой есть статья о тестировании частных методов с использованием Junit и reflection - http://www.jroller.com/CoBraLorD/entry/junit_testing_private_fields_and – vk239