Unit testing 如果我';我在用Mockito?

Unit testing 如果我';我在用Mockito?,unit-testing,mockito,Unit Testing,Mockito,我不熟悉单元测试和Mockito。我为接口编写代码以获得最佳实践,但是,既然我使用Mockito,那么什么时候才真正需要为单元测试实现这些接口呢?如果我正在寻找与Mockito Mock提供的默认值不同的默认值,我是否只需要这个 谢谢 您只“需要”被测试类(“被测试系统”)的实现。任何协作者(可能在被测试的类中显示为注入字段,或者作为对被测试的类调用的方法的参数)都可以保留为模拟接口 但是,您使用的对象越不真实,测试就越复杂,因为您必须将这些协作者的所有预期行为重新编写为“when(…)”语句。

我不熟悉单元测试和Mockito。我为接口编写代码以获得最佳实践,但是,既然我使用Mockito,那么什么时候才真正需要为单元测试实现这些接口呢?如果我正在寻找与Mockito Mock提供的默认值不同的默认值,我是否只需要这个

谢谢

您只“需要”被测试类(“被测试系统”)的实现。任何协作者(可能在被测试的类中显示为注入字段,或者作为对被测试的类调用的方法的参数)都可以保留为模拟接口

但是,您使用的对象越不真实,测试就越复杂,因为您必须将这些协作者的所有预期行为重新编写为“when(…)”语句。从本质上讲,您实际上第二次将应用程序代码编写为“when(…)”语句

我尝试只模拟“深层”对象,这些对象有一个长的依赖链,以生成我试图创建的测试场景。像实体类、传输对象等,很少应该被模拟,因此它们通常应该被实现。其他类型的对象是灰色区域


最终,您将始终希望确保对实际实现类进行测试,否则测试没有意义。

根据Mockito文档,您永远不需要使用接口来模拟类。始终按照接口编码是一种流行做法,而不是最佳做法。