wordpress 会话已过期,优化大师下载,到哪个网站找内控制度建设,做投资的网站引言
测试是软件开发过程中不可或缺的一环#xff0c;而JUnit作为Java生态中最流行的测试框架之一#xff0c;与Spring Boot的整合为开发者提供了一套强大的测试工具。本文将讨论Spring Boot整合JUnit的技术细节、最佳实践以及测试驱动开发#xff08;TDD#xff09;的优雅…引言
测试是软件开发过程中不可或缺的一环而JUnit作为Java生态中最流行的测试框架之一与Spring Boot的整合为开发者提供了一套强大的测试工具。本文将讨论Spring Boot整合JUnit的技术细节、最佳实践以及测试驱动开发TDD的优雅实践以帮助开发者充分利用这一强大组合提高代码质量与可维护性。
Spring整合JUnit的制作方式
//加载spring整合junit专用的类运行器
RunWith(SpringJUnit4ClassRunner.class)
//指定对应的配置信息
ContextConfiguration(classes SpringConfig.class)
public class UserServiceTestCase {//注入你要测试的对象Autowiredprivate UserService userService;Testpublic 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的依赖
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependency
/dependencies测试类
SpringBootTest
class UserTest {Autowiredprivate UserController userController;Testpublic void testJunit(){System.out.println(userController);}
}注意 测试类所在的包需要和启动类是在同一个包下。否则就要使用如下写法指定启动类。
方式一
使用属性的形式进行在注解SpringBootTest中添加classes属性指定配置类
SpringBootTest(classes UserApplication.class)
class UserTest {Autowiredprivate UserController userController;Testpublic void testJunit(){System.out.println(userController);}
}方式二
回归原始配置方式仍然使用ContextConfiguration注解进行效果是一样的
SpringBootTest
ContextConfiguration(classes UserApplication.class)
class UserTest {Autowiredprivate UserController userController;Testpublic 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注解都不能使用了。
dependencygroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactIdscopetest/scope
/dependency注意 org.junit.Test对应的是Junit4的版本就搭配RunWith注解来使用。
SpringBootTest
RunWith(SpringRunner.class)
class UserTest {Autowiredprivate UserController userController;Testpublic void testJunit(){System.out.println(userController);}
}结语
Spring Boot与JUnit的整合为测试提供了便捷且强大的工具通过理解Spring Boot与JUnit的整合细节开发者可以更加自信地构建出稳健、高效的应用程序。在项目的生命周期中充分发挥测试的作用将使得代码更加健壮、可测试和易于维护。