1.介绍
在这篇快速文章中,我们将介绍@RunWithJUnit 5框架中的注释。
在JUnit 5中,的@RunWith注释已经被更强大的注释所取代@ExtendWith注释。
然而,@RunWith为了向后兼容,JUnit5中仍然可以使用注释。
2.使用基于junit4的运行器运行测试
可以在任何其他旧的JUnit环境中使用@RunWith注释。
让我们来看一个在只支持JUnit4的Eclipse版本中运行这些测试的示例。
首先,让我们创建要测试的类:
public class greeting {public static String sayHello() {return "Hello";}}
接下来,让我们创建这个简单的JUnit5测试:
public class GreetingsTest {@Test void whenCallingSayHello_thenReturnHello() {assertTrue(“Hello”.equals(Greetings.sayHello()));}}
最后,让我们添加这个注释来运行测试:
@RunWith(JUnitPlatform.class) public class GreetingsTest{//…}
的JUnitPlatform类是一个基于JUnit4的运行器,它让我们在JUnit平台上运行JUnit4测试。
让我们请记住,JUnit4并不支持新JUnit平台的所有特性,因此这个运行器的功能有限。
如果我们在Eclipse中检查测试结果,我们可以看到使用了JUnit4运行器:

3.在JUnit5环境中运行测试
现在让我们在支持JUnit5的Eclipse版本中运行相同的测试。在这种情况下,我们不需要@RunWith我们可以在没有运行器的情况下编写测试:
public class GreetingsTest {@Test void whenCallingSayHello_thenReturnHello() {assertTrue(“Hello”.equals(Greetings.sayHello()));}}
测试结果表明,我们现在使用的是JUnit5运行器:

4.从基于junit4的Runner迁移
现在让我们将一个使用基于junit4的运行器的测试迁移到JUnit5。
我们将以Spring测试为例:
@ContextConfiguration(classes = {SpringTestConfiguration.class}) public class GreetingsSpringTest{//…}
如果我们想要将这个测试迁移到JUnit5,我们需要替换@RunWith使用新的@ExtendWith:
@ContextConfiguration(classes = {SpringTestConfiguration.class}) public class GreetingsSpringTest{//…}
的SpringExtension类是由Spring 5提供的,并将Spring TestContext框架集成到JUnit 5中。的@ExtendWith注释接受实现扩展接口。
5.结论
在这篇简短的文章中,我们介绍了JUnit 4的使用@RunWithJUnit5框架中的注释。
示例的完整源代码是可用的在GitHub。