unit-testing - 为什么我的单元测试需要一个模拟框架?

标签 unit-testing mocking

最近,围绕 .NET 世界中所有不同的模拟框架进行了相当多的炒作。我仍然不太明白他们的伟大之处是什么。自己编写我需要的模拟对象似乎并不难。特别是在 Visual Studio 的帮助下,我可以快速编写一个类来实现我想要模拟的接口(interface)(它为我自动生成几乎所有内容),然后为我的测试所需的方法编写一个实现。完毕!为什么要为了节省几行代码而费尽心思去理解模拟框架呢?或者模拟框架不仅仅是为了节省代码行?

最佳答案

一旦我最终掌握了模拟对象的窍门,我意识到它们对于单元测试至关重要,就像双盲测试或对照组对于科学试验至关重要一样:它们隔离了您实际测试的内容。

如果您正在测试一个通过其他接口(interface)进行大量交互的类,您不仅可以节省必须模拟每个接口(interface)的代码行,而且还可以获得执行“抛出”之类的操作的能力如果调用了意外的方法,则出现异常”或“如果这些方法被乱序调用,则出现异常”。您可以使用模拟框架变得非常复杂,尽管我很快就会承认有一个很大的学习曲线,但当您加快速度时,它们将帮助您使单元测试更加彻底,而不会变得臃肿。

关于unit-testing - 为什么我的单元测试需要一个模拟框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/300177/

相关文章:

scala - 模拟 Scala 对象和函数

testing - 在 Go 中模拟单个方法

javascript - 如何对已更改的包运行单元测试

angular - fakeAsync 的 tick() 和 done() 在 angular2 测试中有什么区别?

python - 如何模拟函数以返回带有属性的响应?

unit-testing - 有哪些可用于 D 的模拟对象库?

java - IntelliJ IDEA 测试 - 如何显示分支覆盖率

javascript - Jasmine 与 jQuery Mobile 的兼容性

javascript - Sinon - stub 模块功能并在没有依赖注入(inject)的情况下对其进行测试

angularjs - 模拟 e2e 测试时如何检测 API 修改?