USe*_*299 11 java junit mocking mockito
所以,让我说我必须写一些ClassA
有ClassB
成员的测试,我在嘲笑ClassB
.
在测试结束时,我想使用verify(..)
和verifyNoMoreInteractions(..)
设置所有模拟调用的行为和验证.
假设模拟与不同方法的交互超过10次.
有没有办法让JUnit打印所有的模拟交互,然后在代码中使用它?
现在我只是阅读代码并查找调用,而不是在测试中编写验证行.我确信有一种更简单的方法(TDD在我的情况下不可能:))
我的用例:我有一个算法的类,它使用了很多我嘲笑的类.在添加一个调用大量其他方法的新方法时,我想确保在代码工作时只调用了多少个方法.这将确保如果有人在将来改变某些东西,让我们说错误地调用方法5次而不是4次,那么测试将失败.
Jef*_*ica 15
您可以使用MockingDetails,要么printInvocations
或getInvocations
检查属于一个模拟的互动.但是,这不会按照发生的顺序生成属于多个模拟的调用列表:只是与每个模拟的交互.
在评论中承认你的不情愿和警告,我会说这是一种技术,可以锁定你当前的实现,而不是分析你的真实约束和防止回归.此外,如果您的算法与直接协作者有很多交互,那么可能表明该算法应该被重构.
如果系统是未经测试或未记录的遗留代码,这可能是一种以编程方式生成回归测试或分析的实用方法 - 这是一个更为知情的回归测试的临时起点 - 但是,相反,我会先记录合同每个组件然后编写一个确认这些交互和约束的测试.Mockito的建议(正如Mockito的原始开发人员通过本文所暗示的那样)倾向于在测试通过之前添加存根,并且仅在存在昂贵或非幂等副作用的情况下添加验证/计数.
归档时间: |
|
查看次数: |
4563 次 |
最近记录: |