我正在尝试确定编写可测试代码的最佳方法。这里是我的代码在这种情况下编写可测试代码
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和反射测试私有方法的文章 - http://www.jroller.com/CoBraLorD/entry/junit_testing_private_fields_and – vk239