【发布时间】:2015-12-15 20:03:35
【问题描述】:
我正在尝试确定编写可测试代码的最佳方式。这是我的代码
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() 在调用代码中所做的事情是否有意义?
【问题讨论】:
-
您不应该为了编写可测试的代码而将方法设为公开或私有。你总是可以使用反射来测试你的类的私有方法。
-
Junit/TestNG 等测试框架是否支持开箱即用的这种基于反射的测试?
-
这是一个链接,其中有一篇关于使用 Junit 和反射测试私有方法的文章 - jroller.com/CoBraLorD/entry/junit_testing_private_fields_and
标签: java