zoukankan      html  css  js  c++  java
  • SpringBoot单元测试踩坑

    今天写了一个算法,需要用单元测试来测试其效果。

    后端使用SpringBoot框架

    pom文件导入依赖如下

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>                    

    Test类

    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = MyApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class BPNNTest {
    
        @Autowired
        private TestService service;
    
        @Test
        public void test1() {
            service.estimateTime();
        }
    }

    在测试过程中遇到了几个问题,记录如下

    报错一:

    java.lang.NoClassDefFoundError: org/springframework/core/annotation/MergedAnnotations

    查找资料后发现原因是之前引入的依赖问题,

            <!--原先的依赖-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.2.1.RELEASE</version>
                <scope>compile</scope>
            </dependency>

    解决方案就是将版本降低至5.0.2.RELEASE或者删掉该依赖,仅用spring-boot-starter-test即可。

    报错二:

    Error creating bean with name 'methodValidationPostProcessor'
    ...
    Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.DOUBLEE

    该报错尾部提示类型不对,将相应类型改为正确类型即可

    报错三:

    javax.websocket.server.ServerContainer not available

    查找资料后发现SpringBootTest在启动时不会启动服务器,所以websocket会报错,需提供一个测试的web环境

    解决方案就是在@SpringBootTest注解内添加webEnvironment属性

    @SpringBootTest(classes = MyApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
  • 相关阅读:
    javascript对象的几种创建方式
    webpack模块打包工具
    position的值, relative和absolute分别是相对于谁进行定位的
    实现快速排序
    实现冒泡排序:
    实现勾选框选中之后加个勾
    AJAX教程
    打印菱形
    快速创建简单的WCF跨平台服务
    .NET CORE 1.0, MVC6 & ANGULARJS2 -启动
  • 原文地址:https://www.cnblogs.com/MrZhaoyx/p/13271828.html
Copyright © 2011-2022 走看看