【发布时间】:2015-03-05 12:17:32
【问题描述】:
如何执行自动化测试,可选择将其指定为单元测试或“轻量级集成测试”,而无需两次编写相同的测试,并且只更改它所依赖的接口以使其成为两者之一?
具体来说,我想执行一个测试并将其指定为单元测试或集成测试。 根据我选择的模式,测试应该会生成一个服务接口。
- 我不想维护两组相同的代码,唯一的区别是接口:
- 访问外部系统的服务(集成测试)
- MockService(单元测试)
【问题讨论】:
-
你可以有两个测试调用一些通用代码。每个单独的测试都会设置依赖项(模拟或其他)。
-
我建议为单元测试和集成测试设置单独的项目。将两者结合起来会使仅在 IDE 中运行单元测试变得更加困难,给 CI 构建增加了一些复杂性,并且很容易将集成测试错误地标记为单元测试。
-
@David:我的目标是我的“单元测试”(速度)的业务逻辑和我的集成测试的外部依赖项(数据库)。我看不到单元测试类的商业价值,因为它们将通过它们的接口进行重复测试。如果我确实按照您的描述执行单元测试,那么我可能不得不维护大量与接口测试重叠的测试。但是,我确实看到了将视图模型作为主要界面进行测试的价值。我将考虑提取测试逻辑并按照 Matthew 的建议传入依赖项。
标签: c# .net unit-testing automated-tests integration-testing