我见过很多关于这个主题的信息,但想提供一个具体的例子,并提出一些具体问题。ASP MVC 5集成测试与单元测试与SDK
我目前正处于一个开发项目的中间,在该项目中,我正在通过OEM提供的SDK针对电话系统进行编程。我创建了几个扩展SDK功能的接口类,并将这些类重构为支持依赖注入以便于测试。在最底层,我有像“retrieveUserInfo”这样的接受连接接口和查询对象的方法。
当单元测试,我可能实际上创建一个连接到电话系统,取回给定的用户,并检查它的正确数据。这个测试对我来说很有意义,因为它让我知道我的中间件和底层OEM库都正常工作;但是,因为它实际上创建了与外部系统的连接,所以对我来说看起来更像是一个集成测试(如果您无法连接到电话系统,则测试将失败,用户没有按预期配置,我有一些错误在我的业务逻辑中,或者底层库存在问题)。
该测试是否应该标记为集成测试?如果是这样,我会怎么去尝试单元像“retrieveUserInfo”这样的测试方法?我如何正确分割这两种类型的测试?
所以我可以有一个Visual Studio项目,致力于*单元*测试,我嘲笑的外部依赖性和测试我的业务逻辑,另一个VS项目致力于集成测试,我居然打电话到外部的图书馆...听起来约对? – slashNburn
你肯定会有一个单独的单元测试项目,但嘲讽不是一成不变的;一种解决方案可能是为您的电话系统(ITelephony)提取一个接口,添加一个假实现(MockTelephony),接线 - 全部在代码中完成;在你的单元测试项目中,你只需切换到使用模拟(它可以返回一些预定义的数据) –
是的,通过这种方式拆分集成和单元测试是很常见的。有些人可能希望你回避整合测试期。所有测试套件不可避免地导致开销测试维护,集成测试比单元测试更为重要。 –