测试读取和写入文件系统的类时的单元测试最佳实践

2022-09-04 07:28:36

我有一个类,它对磁盘上的文件执行操作。更确切地说,它遍历一个目录,读取具有给定后缀的所有文件,并对数据执行一些操作,然后将其输出到新文件。

我对如何为这个类设计单元测试有点怀疑。我正在考虑让设置方法在/ tmp / somefolder中创建一个临时目录和临时文件,但我怀疑这是一个坏主意,原因有几个(开发人员使用Windows,文件权限等)。

另一个想法是模拟我用来写入和读取磁盘的类,通过使用接口封装类,然后提供一个模拟对象,但它似乎有点混乱。

处理此类问题的标准方法是什么?


答案 1

如果使用 JUnit 4.7 及更高版本,则可以使用 @TemporaryFolder 规则透明地获取一个临时文件夹,该文件夹应在每次测试后自动清除。


答案 2

你的策略是正确的,IMO。只需确保不要对临时目录进行硬编码即可。用于获取临时目录的路径,并在测试完成后使用 finally 块或方法来清理创建的文件和目录。System.getProperty("java.io.tmpdir")@After


推荐