单元测试在不使用模拟框架的情况下写入文件的代码

时间:2016-10-05 08:22:58

标签: unit-testing junit

我想编写一个单元测试功能,与文件系统交互(写入文件)。 我已经适应了创建临时文件夹的解决方案,使用: @Rule 注释和 TemporaryFolder 类。单元测试后将删除此文件。但是这个解决方案有两个缺点:

  • 在TU期间与文件系统交互(与数据库和网络类似)不是一个好习惯。
  • 如果发生问题并且未正确关闭临时文件夹中的文件,则永远不会删除此目录。

有没有办法编写单元测试来测试与文件系统交互的功能,而不使用像Mockito这样的模拟框架?

1 个答案:

答案 0 :(得分:1)

当然,访问文件系统是不符合单元测试的想法;但是:写入一些本地文件仍然比网络/数据库通信快得多。

当您在失败后将这些目录留在原地时,您也可以直接访问所有已创建的输出;这可能有助于调试目的。

最后:然后你总是可以在其他层上触发临时目录的“擦除” - 从而最大限度地减少“剩饭”的可能性。

长话短说:在这里务实

如果在写入本地文件系统时测试仍然简单且有用;然后保持这种方式。不要改变你的工作方法,只是盲目地遵循其他人制定的规则。

另一方面,如果你(和你的团队成员!)对当前的解决方案感到不舒服;然后确定您的选项空间并决定是否要更改设置中的内容。

相关问题