何时使用@RunWith以及何时使用@ExtendWith

时间:2019-03-21 08:43:45

标签: spring-boot junit4 junit5

我的团队和我一直在使用Spring Boot开发大量微服务。 由于这些服务是通过JUnit和Spring Boot升级进行的(我们现在使用的是Spring Boot 2和JUnit 5),所以由不同开发人员实现的不同JUnit现在通过以下方式使用不同的模式:

  • @ExtendWith
  • @RunWith

今天两者之间有什么区别?我们是否真的需要将它们用于单元测试或嵌入到一些新的Spring Boot注释中?

3 个答案:

答案 0 :(得分:4)

如果您使用的是Junit版本<5,则必须使用@RunWith(SpringRunner.class)@RunWith(MockitoJUnitRunner.class)等。

如果您使用的是Junit版本= 5,则必须使用@ExtendWith(SpringExtension.class)@ExtendWith(MockitoExtension.class)等。

  1. SpringRunner
  2. MockitoJUnitRunner
  3. SpringExtension
  4. MockitoExtension

答案 1 :(得分:2)

答案可以在documentation中找到:

  

如果您使用的是JUnit 4,请不要忘记   将@RunWith(SpringRunner.class)添加到您的测试中,否则   注释将被忽略。如果您使用的是JUnit 5,则无需   添加与@SpringBootTest等价的@ExtendWith(SpringExtension)和   其他…@…已经有批注

答案 2 :(得分:0)

@RunWith是JUnit 4中的一个旧注释,用于使用测试运行器。如果您使用的是JUnit 5(木星),则应使用@ExtendWith来使用JUnit扩展。