ASP MVC 5 集成测试与使用 SDK 进行单元测试
ASP MVC 5 Integration Testing vs Unit Testing with SDK
我看过很多关于这个主题的信息,但想提供一个具体的例子并提出一些具体的问题。
我目前正在进行一个开发项目,我正在通过 OEM 提供的 SDK 针对电话系统进行编程。我已经创建了几个接口 & 类 来扩展 SDK 的功能并重构它们以支持依赖注入以便于测试。在最低级别,我有像“retrieveUserInfo”这样的方法,它接受一个连接接口和一个查询对象。
进行单元测试时,我可以实际创建到电话系统的连接,取回给定用户,并检查其数据是否正确。这个测试对我来说很有意义,因为它让我知道我的中间件和底层 OEM 库都在正常工作;但是,因为它实际上是在创建与外部系统的连接,所以对我来说它更像是一个集成测试(如果您无法连接到电话系统,测试将失败,用户未按预期配置,我有一些错误在我的业务逻辑中,或者底层库有问题。
这个测试应该被标记为集成测试吗?如果是这样,我将如何尝试 unit 测试方法,如“retrieveUserInfo”?如何正确分割这两种类型的测试?
定义什么是 'unit' 是相当困难的。但是,如果您正在测试的是调用实际调用不同系统的外部库,那么您肯定处于集成测试领域。
单位的限制有点主观,但可能会限制在 class 上的 class 或 public 方法。
如果您想对调用外部依赖项方法的方法进行单元测试,那么您需要模拟或存根(请参阅 Moq 以获得良好的模拟库)。
我看过很多关于这个主题的信息,但想提供一个具体的例子并提出一些具体的问题。
我目前正在进行一个开发项目,我正在通过 OEM 提供的 SDK 针对电话系统进行编程。我已经创建了几个接口 & 类 来扩展 SDK 的功能并重构它们以支持依赖注入以便于测试。在最低级别,我有像“retrieveUserInfo”这样的方法,它接受一个连接接口和一个查询对象。
进行单元测试时,我可以实际创建到电话系统的连接,取回给定用户,并检查其数据是否正确。这个测试对我来说很有意义,因为它让我知道我的中间件和底层 OEM 库都在正常工作;但是,因为它实际上是在创建与外部系统的连接,所以对我来说它更像是一个集成测试(如果您无法连接到电话系统,测试将失败,用户未按预期配置,我有一些错误在我的业务逻辑中,或者底层库有问题。
这个测试应该被标记为集成测试吗?如果是这样,我将如何尝试 unit 测试方法,如“retrieveUserInfo”?如何正确分割这两种类型的测试?
定义什么是 'unit' 是相当困难的。但是,如果您正在测试的是调用实际调用不同系统的外部库,那么您肯定处于集成测试领域。
单位的限制有点主观,但可能会限制在 class 上的 class 或 public 方法。
如果您想对调用外部依赖项方法的方法进行单元测试,那么您需要模拟或存根(请参阅 Moq 以获得良好的模拟库)。