我一直在设计大量单元测试,模拟每个单元具有的每个依赖项。这按预期工作。我现在需要进行集成测试。
因此,例如,我有 1 层依赖于另外 2 层,我已经将每个单独的层作为一个单元分别测试,以模拟每个依赖项,但我现在需要执行集成测试。
所以想象一下我有以下三层..
Layer1 > Layer2 > Layer3
我可以在 Layer1 上进行集成测试,它会为 Layer2 和 Layer3 提供真实实例(而不是模拟)。
那么我应该对 Layer2 进行集成测试吗?其中包括以下工作流程
Layer2 > Layer3
这里没有模拟任何东西,它们是集成测试。
我看到的问题是,我从 Layer1 进行的集成测试实际上覆盖了 Layer2 的相同集成测试。
我不太确定我是否做得太过分了。我知道最好有更多的测试而不是不够,但我在测试 layer1 时看到重复项
Layer1 > Layer2 > Layer3
和第二层
Layer2 > Layer3
所以我可能只测试 Layer1 - 使用集成测试
Layer1 > Layer2 > Layer3
这可能会涵盖 layer2 和 layer3 集成测试
Layer2 > Layer3
最佳答案
您应该测试您的应用程序中可实现的任何场景(通过客户/组件交互)。如果 Layer2
可以在没有 Layer1
干扰的情况下与 Layer3
交互 - 对其进行测试。
将集成测试视为对整个用例的测试。是否存在您的客户可以通过单独调用 Layer2
开始的情况?如果有,测试一下。如果不是,你为什么要那样做?永远不要测试未使用的东西。这与编写“稍后可能需要” 的代码是一样的。这是浪费时间,不要那样做。
关于unit-testing - 集成测试/单元测试 : Doing too many integration tests?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17473752/