2014-09-03 26 views

回答

1

在进行单元测试时,您正在测试一个独立的方法:所有其他方法都应该正常工作,并且只测试您的方法以预期(指定...)方式运行。

但在很多情况下,预期的方式意味着调用依赖的类的方法(通过依赖注入,如果你想做单元测试)。

由于这些原因,您需要确保这些调用真的完成了...当然他们被调用期望的参数。

例子:

在您的实际应用,你有你的存储在数据库中的所有更改的存储库类(仅做此!)。但是对于单元测试你的“业务”类(你定义的所有业务规则),你应该嘲笑这个“仓库”类:然后你必须检查这个模拟类是否接收到正确的更新数据。

1

一般来说,这两个问题的答案都是一样的。

如果您正在测试的单元/方法的要求指定需要该行为,这很有用。如果这种行为是必需的,那么这就是您需要验证的事实。

如果确保只调用一次特定方法很重要,那么您可以这样做。如果一个方法不止一次被调用,那么不要明确地测试它。请注意,Mockito“verify”方法的默认值是“times(1)”,这意味着它确认该方法只被调用一次。

关于第二个问题,如果完全有可能用不同的参数调用该方法,则可能需要验证这些参数,并且您不想计算这些出现的次数,只关心一组特定的参数值。

+0

你能否给我一个真实的用例检查参数? – Shookie 2014-09-06 08:25:53

+0

我不打算构造一个具体的例子。然而,考虑到你正在嘲笑的类实质上就是你的CUT(正在测试的类)正在使用的API。您将对CUT有关于您需要调用的API方法的某些功能要求以及要发送的参数。如果有一种API方法对参数的不同变化执行不同的操作,并且功能需求指定需要特定的行为,那么验证参数值就是指定您已经从该API方法请求了特定的所需行为。 – 2014-09-08 16:40:38