@RunWith(MockitoJUnitRunner.class) 和 @RunWith(SpringJUnit4ClassRunner.class) 有什么区别?什么时候合适使用它?

Poo*_*oja 4 java junit mockito

@RunWith(MockitoJUnitRunner.class)和 和有什么区别@RunWith(SpringJUnit4ClassRunner.class)?什么时候合适使用它?

cam*_*tic 5

MockitoJUnitRunner

  • 专门用于 Mockito 测试框架
  • 当您希望将测试集中在单个类上并避免调用依赖项上的方法(而是调用易于配置的模拟/虚拟)时,Mockito 框架有助于模拟依赖项。
  • 上面是mockito的用途,但更多关于这个运行器的具体信息-来自文档:“保持测试干净并改善调试体验”。“Runner 是完全可选的 - 还有其他方法可以让 @Mock 工作”。来源 - https://static.javadoc.io/org.mockito/mockito-core/2.6.8/org/mockito/junit/MockitoJUnitRunner.html

SpringJunit4ClassRunner

  • 专门用于 spring 框架
  • 当需要加载 spring 上下文(创建 spring bean、执行依赖注入等)时,用于集成测试。
  • 在集成测试中,您可能不会对依赖项进行太多的模拟,但您可以在同一个测试中同时进行这两项操作。
  • 当您想要测试加载 spring 上下文或者从服务/高级一直测试到较低级别(例如通过单个测试进行数据访问)时,集成测试非常有用。

在某些情况下,您可能想同时使用两者 - 例如集成测试,您还想模拟一些依赖项(也许它们进行远程调用)。不幸的是,你不能使用两个@RunWiths,但这是一篇很好的文章 - Multiple RunWith statements in jUnit