0
A
回答
1
在进行单元测试时,您正在测试一个独立的方法:所有其他方法都应该正常工作,并且只测试您的方法以预期(指定...)方式运行。
但在很多情况下,预期的方式意味着调用依赖的类的方法(通过依赖注入,如果你想做单元测试)。
由于这些原因,您需要确保这些调用真的完成了...当然他们被调用期望的参数。
例子:
在您的实际应用,你有你的存储在数据库中的所有更改的存储库类(仅做此!)。但是对于单元测试你的“业务”类(你定义的所有业务规则),你应该嘲笑这个“仓库”类:然后你必须检查这个模拟类是否接收到正确的更新数据。
1
一般来说,这两个问题的答案都是一样的。
如果您正在测试的单元/方法的要求指定需要该行为,这很有用。如果这种行为是必需的,那么这就是您需要验证的事实。
如果确保只调用一次特定方法很重要,那么您可以这样做。如果一个方法不止一次被调用,那么不要明确地测试它。请注意,Mockito“verify”方法的默认值是“times(1)”,这意味着它确认该方法只被调用一次。
关于第二个问题,如果完全有可能用不同的参数调用该方法,则可能需要验证这些参数,并且您不想计算这些出现的次数,只关心一组特定的参数值。
相关问题
- 1. 嘲笑框架与功能测试,为什么要嘲笑?
- 2. 嘲笑单元测试类
- 3. 为什么只能调用SmtpClient.SendAsync一次?
- 4. Toast.makeText只被调用一次
- 5. 在Wordpress单元测试中嘲笑
- 6. 在单元测试中嘲笑服务
- 7. 单元测试嘲笑HttpContext的
- 8. 嘲笑单元测试的HttpRequest.Form
- 9. 单元测试模拟不是嘲笑
- 10. setNeedsDisplay只被调用一次
- 11. requestAnimationFrame只被调用一次
- 12. 在Java中嘲笑Db单元测试
- 13. viewWillAppear只被调用一次
- 14. 为什么查询被调用两次?
- 15. Java,单元测试嘲笑mxbean
- 16. 单元测试中嘲笑UnitOfWorkManager.Current
- 17. ABAP单元测试 - 为什么我的设置方法被调用两次?
- 18. 为什么构造函数只被调用一次?
- 19. 为什么run()只会被调用一次?
- 20. 函数被调用n + 1次而不是一次 - 为什么?
- 21. 单元测试日志使用流只为第一次测试工作
- 22. Rails:只测试一次on_create回调
- 23. Nsubstitute:嘲笑一个对象单元测试的参数
- 24. PHP - PDO查询执行两次execute()只被调用一次
- 25. 为什么evaluateJavaScript只能使用一次?
- 26. 为什么beforeRender()被调用两次?
- 27. 使用MemoryStream嘲笑NetworkStream进行单元测试
- 28. 为什么要测试一个方法是否被调用?
- 29. 我的第一次单元测试,我做错了什么?
- 30. 玩笑:嘲讽console.error - 测试失败
你能否给我一个真实的用例检查参数? – Shookie 2014-09-06 08:25:53
我不打算构造一个具体的例子。然而,考虑到你正在嘲笑的类实质上就是你的CUT(正在测试的类)正在使用的API。您将对CUT有关于您需要调用的API方法的某些功能要求以及要发送的参数。如果有一种API方法对参数的不同变化执行不同的操作,并且功能需求指定需要特定的行为,那么验证参数值就是指定您已经从该API方法请求了特定的所需行为。 – 2014-09-08 16:40:38