当前位置:  开发笔记 > 后端 > 正文

我如何知道何时使用基于状态的测试与模拟测试?

如何解决《我如何知道何时使用基于状态的测试与模拟测试?》经验,为你挑选了1个好方法。

哪些场景,应用程序/系统的区域等最适合"经典"基于状态的测试而不是使用模拟对象?



1> 小智..:

我将从TDD/BDD的角度来解决这个问题,测试正在推动设计.

首先,它取决于您购买的设计风格,因为请记住这是关于设计的第一个.正如Martin Fowler在这篇优秀文章中所讨论的那样,Mocks Are Not Stubs有两种思路,他们确实会产生不同类型的设计.

如果你想购买mockist方法,那么我强烈建议你从看看mockobjects网站和他们的文章Mock Roles,Not Objects开始.他们还有一本书出来了.

事实是即使您确实认为模拟优先设计风格不适合您,或者您不希望通过您的应用程序直接执行(例如,在测试您的域/服务层时),那么您仍然会想要使用测试双打.xUnit测试模式解释了不同类型的测试双打及其用途.

我个人从不模拟域类,所以从不嘲笑实体/值对象.然而,我最近一直在尝试模拟对象样式方法,它确实改变了我的设计,我觉得工作风格很舒服.在MVC应用程序中以这种方式工作我可能会从自动验收测试开始,然后我将编写一个模拟任何非域对象(例如存储库/服务)的控制器测试,然后我将继续测试那些存储库/服务再次嘲笑他们的依赖关系.当我到达一个没有麻烦的依赖关系的类时,我停止,例如域实体/值对象.我可以继续测试特定的角色接口,然后由我的域类实现,这是mockobjects的人会推荐的,但我目前看不到这种方法有很多价值.

显然值得补充的是,测试设计在这里很重要,但请记住,虽然90%的IoC/mocking/DIP示例显示了接口实现对(ICustomerRepository/CustomerRepository),但在寻找角色接口方面有很多价值.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有