zoukankan      html  css  js  c++  java
  • SpringBoot高版本修改为低版本时测试类报错解决

     有时在使用idea通过Spring Initailizr创建项目时,默认只能创建最近的版本的SpringBoot项目。

    这是如果想要换成版本,就可以在项目创建好了之后,在pom文件中直接将版本修改过来。

    如下所示

    比如在创建项目时默认的版本为2.2.2版本:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>

    然后我们修改为1.5.10的低版本:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.10.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>

    这时可能会遇到一个问题,那就是——在高版本时,默认的测试类是没问题可以使用的

    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class SpringBootTestWebApplicationTests {
    
        @Test
        void contextLoads() {
            System.out.println("hello world");
        }
    
    }

    但是在更换成低版本之后,测试类将会报错,如下所示,无法导入在2.2.2高版本中使用的org.junit.jupiter.api.Test类

     此时可以做如下修改

    1、删除高版本默认导入的org.junit.jupiter.api.Test类,重新导入org.junit.Test类

    2、在类上添加注释@RunWith(SpringRunner.class),如下图:

     注:

    1. 通过@RunWith注解,更改测试运行器,更改使用的测试类为SpringRunner.class,使之适应spring。
    2. @RunWith(SpringRunner.class)使用了Spring的SpringRunner,以便在测试开始的时候自动创建Spring的应用上下文。其他的想创建spring容器的话,就得子啊web.xml配置classloder。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器
    3. SpringRunner 继承了SpringJUnit4ClassRunner,没有扩展任何功能(查看源码可以看到public final class SpringRunner extends SpringJUnit4ClassRunner);使用前者,名字简短而已

    3、将测试类和测试方法都修改为public

    4、最后修改的测试类如下所示:

    package com.susu.springboot;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringBootTestApplicationTests {
    
        @Test
        public void contextLoads() {
            System.out.println("hello world");
        }
    
    }

    运行结果:

  • 相关阅读:
    vue-cli3配置开发环境和生产环境
    vue配置开发环境和生产环境
    js实现div拖拽互换位置效果
    axios用post提交的数据格式
    面试题会被问及哪些?(总结)
    深入理解vue
    nodejs 前端项目编译时内存溢出问题的原因及解决方案
    MUI框架开发HTML5手机APP(一)--搭建第一个手机APP
    关于if省略{}时的一些问题
    函数声明的两种形式的区别
  • 原文地址:https://www.cnblogs.com/suhaha/p/12050040.html
Copyright © 2011-2022 走看看