单元/集成测试中文件系统依赖性的最佳实践

Olv*_*gor 21 filesystems dependencies unit-testing

我刚开始为很多代码编写测试.有一堆类依赖于文件系统,即读取CSV文件,读/写配置文件等等.

目前,测试文件存储在项目的测试目录中(它是Maven2项目),但由于多种原因,该目录并不总是存在,因此测试失败.

您是否了解在单元/集成测试中应对文件系统依赖性的最佳实践?

编辑:我不是在寻找上面描述的特定问题的答案.那只是一个例子.我更喜欢一般建议如何处理文件系统/数据库等的依赖项.

phi*_*ant 24

第一个应该尝试使单元测试远离文件系统 - 请参阅此单元测试规则集.如果可能,您的代码使用Streams,它们将是单元测试的缓冲区(即内存中)和生产代码中的FileStream.

如果这不可行,您可以让您的单元测试生成他们需要的文件.这使得测试易于阅读,因为所有内容都在一个文件中.这也可能会阻止权限问题.

您可以在单元测试中模拟文件系统/数据库/网络访问.

您可以将依赖于DB或文件系统的单元测试视为集成测试.


Aar*_*lla 0

通常,文件系统测试并不是很关键:文件系统易于理解、易于设置并保持稳定。此外,访问通常非常快,因此本身没有理由回避它或模拟测试。

我建议您找出该目录不存在的原因并确保它存在。例如,在setUp()中检查文件或目录是否存在,如果检查失败则复制文件。这只会发生一次,因此对性能的影响很小。