Java,tdd方法,IO操作

时间:2013-08-27 23:02:14

标签: java testing io

我正在训练TDD方法,但我遇到了问题。如何测试IO操作?到目前为止我使用过junit,但我读到它不应该用于测试外部源(数据库,文件......),那么更好的是什么?抱歉我的英文不好

2 个答案:

答案 0 :(得分:1)

您无法测试这些外部来源的内部工作情况,但您可以查看结果。

例如,写入文件:

  

开始测试
  将要写入的数据存储在变量中   将数据写入文件
  阅读文件
  检查数据是否与您存储的数据相同   结束测试

测试是关于验证最终结果,所以你“失去”过程的一部分并不一定是坏事。通常,您可以假设外部源(库,IO ..)已经过充分测试。

答案 1 :(得分:1)

更改您的API以传递InputStream和/或OutputStream,并让您的jUnit代码通过ByteArrayInputStream和ByteArrayOutputStream,您可以轻松设置/读取。

当然,您的生产代码需要更改为,但您通常可以通过简单的重构来实现;将API保持原样,但让公共方法调用重构方法,例如:

更改

public void read(File file) {
    // do something with contents of file
}

public void read(File file) {
    read(new FileInputStream(file));
}

// test this method
public void read(InputStream inputStream) {
    // do something with contents of inputStream
}