Wes*_*ill 7 unit-testing design-patterns dependency-injection
通常在使用依赖注入时,单元(和其他)测试负责创建/模拟被测系统的依赖关系并注入它们.
但是,有时测试本身具有依赖性,或者需要将依赖项注入到它本身无法创建的SUT中.例如,在测试与数据库交互的类时,测试需要知道连接字符串和目录名称等,这些不能被硬编码,因为对于运行测试的每个人来说它们不一定相同.
那么,您如何建议测试找出这些设置?一些xUnit风格的测试框架是否提供了一种为测试夹具提供依赖关系的方法?在运行所有测试之前,测试类是否应该填充静态属性?该测试是否应该忽略DI实践,只是从一些全球的地方获取依赖关系?其他建议?
当您使用单元测试框架进行集成测试时,您实际上并不存在 DI 或单元测试问题。
您所拥有的是利用高性能单元测试框架的集成测试。
由于它们是集成测试,因此它们与单元测试在类型上有所不同。“独立性”已经不再重要了。
获取因用户而异的集成测试设置的最佳方法是以最终应用程序获取它们的方式相同。如果您使用 Java,则可能有一个属性文件。在 Python 中,我们有特殊的 Django 设置文件用于集成测试。