我需要为每个类创建模拟类吗?

软件测试 测试设计 单元测试
2022-02-02 18:41:48

假设我有一个由三个类组成的系统:A、B、C,它们共享某些依赖项。

要独立测试 A,我需要为 B 和 C 创建模拟对象 要独立测试 B,我需要为 A 和 C 等创建模拟对象......

因此,如果我想为 A、B 和 C 编写测试,我需要为它们中的每一个创建模拟类。我是否正确理解这一点?

3个回答

我将您的示例解释为 A、B 和 C 都是相互依赖的,即依赖图中有六个边。在考虑如何对这样的设计进行单元测试之前,您可能会问自己是否真的需要那么多依赖项。这对社会来说是个好主意,但对代码库来说却不是。大量的相互依赖是脆弱、难以维护的代码的先驱。

答案是肯定的,但这通常是矫枉过正的。理想情况下,您的应用程序应该已经编程为接口,并且您应该能够选择模拟允许您独立测试组件的接口。

有人想模拟依赖关系。如果 A 依赖(即使用)B 和 C,则可能需要模拟 B 和 C,具体取决于该特定测试是否使用它们。

模拟的创建也不是一次性的事情。Mocks 用于测试期望并强制执行某些行为(例如,为了测试异常处理而抛出异常的函数)。