Java 什么';@RunWith(MockitoJUnitRunner.class)和@RunWith(SpringJUnit4ClassRunner.class)之间的区别是什么?何时适当地使用它?

Java 什么';@RunWith(MockitoJUnitRunner.class)和@RunWith(SpringJUnit4ClassRunner.class)之间的区别是什么?何时适当地使用它?,java,junit,mockito,Java,Junit,Mockito,@RunWith(MockitoJUnitRunner.class)和@RunWith(SpringJUnit4ClassRunner.class)之间有什么区别?何时适当地使用它?MockitoJUnitRunner 专门用于Mockito测试框架 当您希望将测试集中在单个类上并避免调用依赖项上的方法(而是调用易于配置的mock/dummy)时,Mockito框架有助于模拟依赖项 以上是mockito的用途,但有关这个运行程序的更多信息,请参阅文档:“保持测试干净并改进调试体验”。“Runn

@RunWith(MockitoJUnitRunner.class)
@RunWith(SpringJUnit4ClassRunner.class)
之间有什么区别?何时适当地使用它?

MockitoJUnitRunner
  • 专门用于Mockito测试框架
  • 当您希望将测试集中在单个类上并避免调用依赖项上的方法(而是调用易于配置的mock/dummy)时,Mockito框架有助于模拟依赖项
  • 以上是mockito的用途,但有关这个运行程序的更多信息,请参阅文档:“保持测试干净并改进调试体验”。“Runner是完全可选的-您可以通过其他方式获得@Mock working”。来源-
SpringJunitClassRunner
  • 特定于与spring框架一起使用
  • 当需要加载spring上下文(创建Springbean、执行依赖项注入等)时,用于集成测试
  • 在集成测试中,您可能不会对依赖项进行太多模拟,但可以在同一测试中同时进行这两种模拟
  • 当您希望测试加载spring上下文,或者可能从服务/高层一直测试到较低层(如使用单个测试进行数据访问)时,集成测试非常有用
在某些情况下,您可能希望同时使用这两种方法—例如集成测试,您还希望模拟某些依赖项(可能它们进行远程调用)。不幸的是,你不能使用两个@RunWiths,但这是一个很好的帖子-