• 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共存,这种依赖关系是显得那么混乱无法管理,出现问题难以处理。

  • 相关阅读:
    Python解释器
    js子节点children和childnodes的用法
    添加jar包需注意
    Class.forName("com.mysql.jdbc.driver");
    java集合类总结
    interface思考练习一
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    Struts2的配置文件中, <package>的作用,<action><result>重名?
    在Struts2的Action中获得request response session几种方法
    学习一直都是一个相见恨晚的过程,我希望我的相见恨晚不会太晚。
  • 原文地址:https://www.cnblogs.com/mzc1997/p/14306538.html
Copyright © 2020-2023  润新知