笔记 @RunWith(SpringRunner.class)的作用以及与spring的联系

@RunWith(SpringRunner.class)的作用

在JUnit 4下,有许多不同的测试运行器(Test Runner)可用于执行单元测试。默认情况下,Junit使用内置的测试运行器(BlockJUnit4ClassRunner)来运行单元测试。但是,对于一些特殊场景下的测试,我们可能需要使用其他测试运行器。

而Spring框架提供了一个测试运行器(SpringRunnerSpringJUnit4ClassRunner ), 它继承自 JUnit 的 BlockJUnit4ClassRunner 类。它可以加载 Spring 应用程序上下文并将其注入到测试类中,从而提供对依赖注入功能的支持。当您想要在测试期间使用 Spring 框架中的 beans 时,就需要在测试类上添加@RunWith(SpringRunner.class)注解,并使其运行基于 Spring 的单元测试。

通过@RunWith(SpringRunner.class)注解,JUnit会使用Spring的测试运行器来运行测试类中标注了@Test注解的测试方法,并配置Spring环境。整个测试生命周期都使用Spring容器来启动、进行和关闭,和真正运行Spring Boot应用程序并没有本质区别。

简而言之,@RunWith(SpringRunner.class)注解是为了在测试期间为您的代码创建一个 Spring ApplicationContext,并确保所有速记标记工作完美运行,如@Autowired 的注入等。这个注解补充JUnit,从而提供了基于Spring的测试功能,使得我们在测试时可以更加轻松地使用Spring的特性,而不需要自己搭建一个应用,提高了测试效率。

测试运行器:SpringRunnerSpringJUnit4ClassRunner

在 JUnit4 中,Spring Runner 有两个版本:SpringRunnerSpringJUnit4ClassRunner。它们都是基于 JUnit4 的 Spring 测试框架的实现,用于在测试类中支持加载 Spring Bean 容器并进行依赖注入。它们的区别如下:

  1. SpringRunner包含在spring-test模块中,而SpringJUnit4ClassRunner已经过时,在新版本的 Spring 中已被删除,在旧版本中仍可使用。

  2. SpringRunner间接继承自BlockJUnit4ClassRunner,而SpringJUnit4ClassRunner则直接继承自 JUnit4 的BlockJUnit4ClassRunner

  3. SpringRunner可以清除测试时创建的所有 bean 实例,使测试环境不受影响。而SpringJUnit4ClassRunner不支持此功能。

  4. 在针对多线程测试时,SpringRunner能够更好地和 JUnit 的规则(Rule)结合使用,而在SpringJUnit4ClassRunner中,JUnit 中的 Rule 不容易与其集成。

在实际应用中,建议使用 SpringRunner 来代替SpringJUnit4ClassRunner,因为它更加轻量,性能也更好,并支持最新的 Spring 版本。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
@Import(MsgConfig.class)是一个注解,用于在测试类中加载MsgConfig类的配置。它是通过import注解来加载测试专用配置的一种方式。在这个例子中,通过@Import(MsgConfig.class)将MsgConfig类引入到ConfigurationTest类中,以便在测试中使用MsgConfig类中定义的bean。\[2\]\[5\] #### 引用[.reference_title] - *1* *3* [@Import注解的作用](https://blog.csdn.net/m0_45406092/article/details/122580874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Springboot笔记](https://blog.csdn.net/qq_17613195/article/details/123120131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *4* *5* [SpringBoot——开发实用(一)](https://blog.csdn.net/weixin_56697114/article/details/125503955)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值