unit-testing - 单元测试应该模拟所有外部服务吗?

标签 unit-testing integration-testing

我正在为磁盘设备管理器创建单元测试,该管理器在 Linux 中格式化磁盘、管理磁盘分区以及创建逻辑卷和组。这个磁盘管理器是一个更大的应用程序中的一个类。我当然必须创建测试来测试(1)磁盘设备管理器类和(2)用于执行磁盘操作的操作系统命令和库的集成。

1) 这些测试会被分类为单元测试还是集成测试?它们看起来像是单元测试,因为它们只测试我的应用程序的一个模块,但它们也看起来像是集成测试,因为它们依赖于外部代码。

2)是否值得同时模拟操作系统命令和外部库行为来创建隔离的单元测试?

提前致谢。

最佳答案

集成测试验证两个(或更多)真实组件如何协同工作。通常组件有一些定义良好的 API,并通过它运行测试以确保 API 的实现。单元测试仅验证一个单元(类别)。我们使用模拟来模拟单元测试中的“外部”行为。

因此,当您针对真实系统(操作系统)测试组件时,这就是集成测试。

为了验证独立于真实环境的类行为,准备模拟是值得的。例如,您可能希望在构建(持续集成)后启动这些单元测试并验证回归。在这种情况下,您希望运行得非常快,而不是处理真正的操作系统。

关于unit-testing - 单元测试应该模拟所有外部服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412009/

相关文章:

java - 用于测试创建和异常功能的 Junit 集成测试问题

javascript - 使用 Typescript 检索 Mocha 测试中当前测试的名称

java - ElasticSearchTestCase:使用ESIntegTestCase创建客户端实例时

unit-testing - 如何使用 Jest 和 enzyme 来监视 componentWillMount

覆盖失败时的异常Python预测试

spring - 如何使用 spring 的 MockRestServiceServer 模拟同一请求的多个响应?

javascript - 将参数传递给回调函数而不更改方法(Siesta 测试命名空间)

android - 使用没有具体 Activity.class 的广播接收器进行集成测试

c++ - 你的测试应该有多详细/粒度?

Angular 4 - 失败 : Can't resolve all parameters for ActivatedRoute: (?,?,?,?,?,?,?,?)