我刚刚开始为我的团队评估模拟框架,并且想知道是否有人有任何关于参考文档或经验的指针,您可以分享关于在进行性能测试时模拟的成本。
链接?个人经验?细节赞赏。
我刚刚开始为我的团队评估模拟框架,并且想知道是否有人有任何关于参考文档或经验的指针,您可以分享关于在进行性能测试时模拟的成本。
链接?个人经验?细节赞赏。
IIRC TypeMock 使用 Profiler API,这通常会增加相当多的开销,但仍然应该比通过分析器运行应用程序更快。
NCover 也使用 Profiler API,而且速度似乎相当快。
Aaron Jensen 创建了一个测试项目并进行了一些性能测试。http://codebetter.com/blogs/aaron.jensen/archive/2008/05/08/mock-framework-benchmarks.aspx
我宁愿选择基于 API 和功能,但性能可能是 TDD 和运行测试负载的问题。
我们已经使用 TypeMock 几年了,根据我的经验,性能上没有显着的开销(我确信有开销,这不是一个大问题)。
然而,由于 TypeMock 工作方式的性质,有几件事情需要考虑。由于 TypeMock 基本上是通过动态注入代码来工作的,因此错误有时可能非常奇特。因此,报告错误可能成为一项艰巨的任务。准备好深入了解 IL。
我的经验是,很难解释 TypeMock 是如何工作的“普通开发人员”。它很快变得复杂,即使他们的 Trace 工具使故障排除成为可能,它仍然留下了一些支持任务。
此外,由于 TypeMock 可以让您模拟任何内容(mscorlib 除外),因此您实际上不需要向代码中添加必要的间接级别。这是一个功能,TypeMock 在这里并没有真正的错。尽管如此,我还是看到很多开发人员试图通过到处模拟而不是解耦代码来解决他们的问题。这并不能提高 IMO 的整体代码质量。
我一直在测试模拟框架(特别是 Moq 和 TypeMock)。TypeMock 更加强大和灵活,但是因为它作为分析器插入到框架中,它确实对性能产生了重大影响。
我的结论是 TypeMock 是用于非负载测试场景的优秀工具。起订量不太灵活……但重量更轻,对一般性能没有广泛影响。使用 Moq,您必须专门设置您的应用程序,以便能够模拟外部依赖项(无论如何都是良好设计的练习),但事实证明它更适合我的负载相关场景。
不幸的是,我没有在关于 Moq 与 TypeMock 的测试中记录实际数字,但根据我的经验,Moq 的性能优势是显着的。