Junit版本与springboot版本关系


Junit

spring-boot-starter-test有如下几个库:

序号 库名的解释
1 JUnit 5:兼容 JUnit 4,Java 应用程序单元测试的事实标准
2 Spring Test 和 SpringBootTest:对Spring Boot应用程序的公共和集成测试支持
3 AssertJ:流式断言库
4 Hamcrest:匹配对象库
5 Mockito:Java 模拟框架
6 JSONassert:JSON 断言库
7 JsonPath:JSON XPath

因此,如果是Springboot项目,无需再重复引入Spring-Test包和Junit包,从Springboot 2.2.X开始版本为junit5。

 

@SpringBootTest>:获取启动类,加载配置,寻找主配置启动类(被 @SpringBootApplication 注解的)

@RunWith(SpringRunner.class)>:让JUnit运行Spring的测试环境,获得[Spring环境的上下文]的支持

使用Junit4需要以上两个注解,junit5仅需@SpringBootTest

 

2、SpringJUnit4ClassRunner与SpringRunner关系

部分人习惯使用SpringJUnit4ClassRunner,SpringRunner是继承自这个类的,两者没有区别

public final class SpringRunner extends SpringJUnit4ClassRunner {
   public SpringRunner(Class<?> clazz) throws InitializationError {
       super(clazz);
  }
}

 

3、使用junit5

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
   <exclusions>
       <exclusion>
           <groupId>org.junit.vintage</groupId>
           <artifactId>junit-vintage-engine</artifactId>
       </exclusion>
   </exclusions>
</dependency>

依赖排除说明:这个是JUnit5中为了支持使用JUint4所做的一个过度,也就是说,你只需要在你的JUnit4旧项目中添加这个依赖, 就能完美过渡,而不用修改之前代码。(如果要在大于springboot 2.2.x版本使用junit4,上述的依赖排除删掉,还需手动引入junit4的jar包因为2.2.x只有junit5依赖)

 

JUnit5结构:

Junit5 = JUnit Platform + JUnit JUpiter + JUnit Vintage

  • JUnit Platform: 这是Junit提供的平台功能模块,通过它,其它的测试引擎都可以接入Junit实现接口和执行。

  • JUnit JUpiter:这是JUnit5的核心,是一个基于JUnit Platform的引擎实现,它包含许多丰富的新特性来使得自动化测试更加方便和强大。

  • JUnit Vintage:这个模块是兼容JUnit3、JUnit4版本的测试引擎,使得旧版本的自动化测试也可以在JUnit5下正常运行。

 

如果是SpringBoot项目,使用Junit测试仅需Starter即可,2.2.x前为junit4,后为junit5,仅需一个starter依赖,除非要变更2.2.x为junit4,不需要排除j5->j4的依赖且需要引入j4依赖。

部分项目 j4 j5共存,这种依赖关系是显得那么混乱无法管理,出现问题难以处理。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM