单元测试应该模拟所有外部服务?

时间:2015-02-09 14:26:41

标签: unit-testing integration-testing

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

1)这些测试是否会被归类为单元测试或集成测试?它们似乎是单元测试,因为它们只测试我的应用程序的模块,但它们似乎也是集成测试,因为它们依赖于外部代码。

2)是否还值得模拟OS命令和外部库行为来创建隔离单元测试?

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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

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