引言
测试是软件开发过程中不可或缺的一环,而JUnit作为Java生态中最流行的测试框架之一,与Spring Boot的整合为开发者提供了一套强大的测试工具。本文将讨论Spring Boot整合JUnit的技术细节、最佳实践,以帮助开发者充分利用这一强大组合,提高代码质量与可维护性。
Spring整合JUnit的制作方式
//加载spring整合junit专用的类运行器 @RunWith(SpringJUnit4ClassRunner.class) //指定对应的配置信息 @ContextConfiguration(classes = SpringConfig.class) public class UserServiceTestCase { //注入你要测试的对象 @Autowired private UserService userService; @Test public void testGetById(){ //执行要测试的对象对应的方法 System.out.println(userService.findById(1)); } }
第一个注解@RunWith是设置Spring专用的测试类运行器,简单说就是Spring程序执行程序有自己的一套独立的运行程序的方式,不能使用JUnit提供的类运行方式了,必须指定一下,但是格式是固定的,琢磨一下,每次都指定一样的东西,这个东西写起来没有技术含量啊
第二个注解@ContextConfiguration是用来设置Spring核心配置文件或配置类的,简单说就是加载Spring的环境你要告诉Spring具体的环境配置是在哪里写的,虽然每次加载的文件都有可能不同,但是仔细想想,如果文件名是固定的,这个貌似也是一个固定格式。既然有可能是固定格式,那就有可能每次都写一样的东西,也是一个没有技术含量的内容书写
主要: SpringBoot抓住上述两点内容书写进行开发简化
Spring Boot与JUnit整合
- 依赖配置
在pom.xml中添加JUnit和Spring Boot Test的依赖:
org.springframework.boot spring-boot-starter-test
- 测试类
@SpringBootTest class UserTest { @Autowired private UserController userController; @Test public void testJunit(){ System.out.println(userController); } }
注意: 测试类所在的包需要和启动类是在同一个包下。否则就要使用如下写法指定启动类。
方式一
使用属性的形式进行,在注解@SpringBootTest中添加classes属性指定配置类
@SpringBootTest(classes = UserApplication.class) class UserTest { @Autowired private UserController userController; @Test public void testJunit(){ System.out.println(userController); } }
方式二
回归原始配置方式,仍然使用@ContextConfiguration注解进行,效果是一样的
@SpringBootTest @ContextConfiguration(classes = UserApplication.class) class UserTest { @Autowired private UserController userController; @Test public void testJunit(){ System.out.println(userController); } }
兼容老版本
如果是对老项目中的SpringBoot进行了版本升级会发现之前的单元测试代码出现了一些问题。
因为Junit5和之前的Junit4有比较大的不同。
从上图可以看出 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
- JUnit Platform: 这是Junit提供的平台功能模块,通过它,其它的测试引擎也可以接入
- JUnit JUpiter: 这是JUnit5的核心,是一个基于JUnit
Platform的引擎实现,它包含许多丰富的新特性来使得自动化测试更加方便和强大。
- JUnit Vintage: 这个模块是兼容JUnit3、JUnit4版本的测试引擎,使得旧版本的自动化测试也可以在JUnit5下正常运行。
虽然Junit5包含了JUnit Vintage来兼容JUnit3和Junit4,但是 SpringBoot 2.4 以上版本对应的spring-boot-starter-test移除了默认对 Vintage 的依赖。 所以当我们仅仅依赖spring-boot-starter-test时会发现之前我们使用的@Test注解和@RunWith注解都不能使用了。
org.junit.vintage junit-vintage-engine test 注意:
org.junit.Test对应的是Junit4的版本,就搭配@RunWith注解来使用。
@SpringBootTest @RunWith(SpringRunner.class) class UserTest { @Autowired private UserController userController; @Test public void testJunit(){ System.out.println(userController); } }
结语
Spring Boot与JUnit的整合为测试提供了便捷且强大的工具,通过理解Spring Boot与JUnit的整合细节,开发者可以更加自信地构建出稳健、高效的应用程序。在项目的生命周期中,充分发挥测试的作用,将使得代码更加健壮、可测试和易于维护。
猜你喜欢
- 13天前(江西启动“唱游江西”计划)江西启动“唱游江西”计划
- 13天前(万达酒店及度假村连续五年荣获“中国饭店集团60强”)万达酒店及度假村连续五年荣获“中国饭店集团60强”
- 13天前(杭州西湖区万怡酒店正式开业了吗)杭州西湖区万怡酒店正式开业
- 13天前(安徽民航君澜大饭店装饰设计招标)集东方文化气息,品徽派隽美风韵----安徽民航君澜大饭店静待绽放
- 13天前(福朋喜来登酒店宴会厅)福朋喜来登品牌亮相北部湾城市群 阳江中心福朋喜来登酒店开业
- 13天前(东北地区全域旅游)东北三省一区宣传贯彻研学旅游行业标准
- 13天前(云南滇陇工程咨询有限公司)陇滇携手谋发展 文旅合作谱新篇
- 13天前(“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%)“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%
- 13天前(携程租车加盟合作)携程租车加盟优势全解析:开启旅游出行市场新篇章
- 13天前(海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章