Spring6整合JUnit的详细步骤
一:Spring6整合JUnit
1. Spring对JUnit4的支持
准备工作:pom.xml
注:以前是直接使用单元测试Junit,现在使用Spring对Junit的整合!
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bjpowernode</groupId> <artifactId>spring6-014-junit</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <!--仓库--> <repositories> <!--spring里程碑版本的仓库--> <repository> <id>repository.spring.milestone</id> <name>Spring Milestone Repository</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories> <dependencies> <!--spring context依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>6.0.0-M2</version> </dependency> <!--spring对junit的支持相关依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <!--这个版本spring6,既支持Junit4又支持Junit5依赖--> <version>6.0.0-M2</version> </dependency> <!--junit4依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> </project>
声明Bean
package com.bjpowernode.spring6.bean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("user") // 纳入spring管理 public class User { @Value("张三") // 通过注解的方式进行赋值 private String name; public User(String name) { this.name = name; } public User() { } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
spring.xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--扫描组件--> <context:component-scan base-package="com.bjpowernode.spring6.bean"/> </beans>
单元测试:
①以前的写法
package com.bjpowernode.spring6.test; import com.bjpowernode.spring6.bean.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringJunit4Test { @Test public void testUser1(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml"); User user = applicationContext.getBean("user", User.class); System.out.println(user.getName()); } }
②使用Spring对Junit4的支持写法
(1)使用两个注解:
①@RunWith(SpringJUnit4ClassRunner.class),这个注解是junit里面的;
②@ContextConfiguration("classpath:spring.xml"),这个注解时Spring框架里面的;
使用这两个注解就相当于new ClassPathXmlApplicationContext("spring.xml");
(2)并且对于applicationContext.getBean("user", User.class);这段代码,我们可以先定义一个User属性,例如:private User user,然后使用@Autowired注解一注入即可
(3)所以我们以后在编写测试代码,如下:
package com.bjpowernode.spring6.test; import com.bjpowernode.spring6.bean.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring.xml") public class SpringJunit4Test { @Autowired private User user; @Test public void testUser2(){ System.out.println(user.getName()); } }
执行结果
在JUnit4当中,Spring提供的方便主要是这几个注解:
①@RunWith(SpringJUnit4ClassRunner.class)
②@ContextConfiguration("classpath:spring.xml")
单元测试类上使用这两个注解之后,在单元测试类中的属性上可以使用@Autowired,比较方便!
2. Spring对JUnit5的支持
引入JUnit5的依赖,Spring对JUnit支持的依赖还是:spring-test,如下:
<!--junit5依赖--> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.9.0</version> <scope>test</scope> </dependency>
单元测试类
package com.bjpowernode.spring6.test; import com.bjpowernode.spring6.bean.User; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; @ExtendWith(SpringExtension.class) @ContextConfiguration("classpath:spring.xml") public class SpringJunit5Test { @Autowired private User uer; @Test public void testUser(){ System.out.println(uer.getName()); } }
在JUnit5当中,可以使用Spring提供的以下两个注解,标注到单元测试类上,这样在类当中就可以使用@Autowired注解了。
①@ExtendWith(SpringExtension.class)
②@ContextConfiguration("classpath:spring.xml")
总结:对于Spring对Junit4和Junit5的支持当中,代码主要有两点不同:
第一点:引入的注解不同
对于Junit4引入的一个注解是@RunWith(SpringJUnit4ClassRunner.class)
对于Junit5引入的一个注解时@ExtendWith(SpringExtension.class)
第二点:使用@Test注解的时导入的包不同
对于Junit4导入的包时org.junit.Test
对于Junit5导入的包时org.junit.jupiter.api.Test
到此这篇关于Spring6整合JUnit的文章就介绍到这了,更多相关Spring6整合JUnit内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Netty中的DelimiterBasedFrameDecoder使用方法详解
这篇文章主要介绍了Netty中的DelimiterBasedFrameDecoder使用方法详解,DelimiterBasedFrameDecoder与LineBasedFrameDecoder类似,只不过更加通用,允许我们指定任意特殊字符作为分隔符,我们还可以同时指定多个分隔符,需要的朋友可以参考下2023-12-12idea2019版与maven3.6.2版本不兼容的解决方法
这篇文章主要介绍了idea2019版与maven3.6.2版本不兼容的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10ConstraintValidator类如何实现自定义注解校验前端传参
这篇文章主要介绍了ConstraintValidator类实现自定义注解校验前端传参的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06
最新评论