Ree*_*ong 2 java junit unit-testing jmockit
我正在使用 JUnit 和 JMockit 创建一个单元测试方法,用于测试 CSV 文件的创建和操作。如何拦截正在创建的文件以确保正确创建?
@Test
public void testPersistResultsAsCSV() throws IOException {
final Long id = new Long(1234l);
TableRow row = new TableRow();
row.setValue(317l);
row.setId(1234l);
final List<TableRow> rows = new ArrayList<TableRow>();
rows.add(row);
final List<TableRow> empty = new ArrayList<TableRow>();
new Expectations() {
{
tableService.findTableRowsById(id, (TableQueryOptions)any);
result = rows;
tableService.findTableRowsById(id, (TableQueryOptions)any);
result = empty;
fileDataService.saveResultsFile((ResultsFile) any);
}
};
resultsToCsvService.persistResultsAsCSV(id);
}
Run Code Online (Sandbox Code Playgroud)
我是 JMockit 的创建者,但我会很高兴地说“不要使用 JMockit”。
您可以模拟 Java IO 类,但这几乎不是一个好主意;相反,使用本地文件系统上的真实文件。您的测试将更简单,更不脆弱且足够快(除非您做了一些不好的事情,例如读/写大文件,大量文件,或访问缓慢的远程目录 - 但这些都不会在编写良好的测试中发生)。
当人们模拟 IO API(即,,,File等FileWriter)时,他们不可避免地会得到一个与被测代码的实现紧密耦合的测试,因此复杂且脆弱。在实践中,最好让测试接触文件系统;如果这使它成为“集成测试”,那就这样吧。
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |