将单元测试数据存储在外部文件中

Storing unit test data in an external file

我知道我们通常说单元测试应该是完全独立的,不依赖于外部系统或数据——这些被称为集成测试。

但是...

我想编写一个模拟,它提供某种方法的结果,该方法本质上 returns 相当大量的 JSON/XML 数据(作为字符串)。在这种情况下,我可以将数据合法地存储在作为我的单元测试项目一部分的文本文件中,还是严格来说这仍然是一个集成测试?

是的,你可以将它存储在一个文本文件中,它仍然是一个单元测试。 (不过,最好是,我建议将文本放在测试代码本身中,除非您已经将它放在文件中,或者文本是真的大。)

unit 测试与 integration 测试的区别不在于它是否涉及文件系统 and/or 其他外部资源.重要的区别在于单元测试是否仅旨在验证单个单元的behavior/state,多个相互依赖的单元的。在后一种情况下,您有一个集成测试。

因此,单元测试 可以 运行 来自它所依赖的其他单元或系统的代码。但它应该假定那些其他单元只是按预期工作,而无需验证它们的行为。单元测试的另一种方法是通过模拟或伪造将被测试单元与依赖项隔离开来。两种方法都有效。