SpringBoot Junit 单元测试无法加载src/main/resources目录下资源文件

SpringBoot 集成Junit比较简单,首先在pom.xml 中增加Junit 的maven 依赖

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

然后, 就可以在 src/test/java/ 目录下编写测试用例了,示例如下:

# GdnMetaApiHelperTest.groovy

package com.app..test

import com.app.gdn.helper.GdnMetaApiHelper
import groovy.transform.CompileStatic
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringRunner

@CompileStatic
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class GdnMetaApiHelperTest {
    @Autowired
    GdnMetaApiHelper gdnMetaApiHelper;

    @Test
    public void testUpdateInsMember() {
        String gdnInsName = "gdntest20"
        String memberKind = "cluster"
        String memberName = "dangyitest13gdnstandby6"
        String status = "active"
        String requestId = "test_request"
        gdnMetaApiHelper.updateInsMember(gdnInsName, memberKind, memberName, null, status, requestId)
    }
}

但是在运行的过程中却一直报错

com.aliyun.apsaradb.gdnmetaapi.ApiException: java.net.UnknownHostException: http: nodename nor servname provided, or not known
    at com.aliyun.apsaradb.gdnmetaapi.ApiClient.execute(ApiClient.java:972)
    at com.aliyun.apsaradb.gdnmetaapi.api.DefaultApi.getGlobalConfigWithHttpInfo(DefaultApi.java:1496)

问题分析

  • gdnmetaapi 的host 我是配置在 src/main/resource/application.yaml 里面的,配置检查后确认没问题,但是运行却一直还报错

  • 查看编译出来的target目录,发现 application.yaml 只在 classes目录,而在 test-classes 目录里面没有


    image.png
  • 结论: test-classes 目录下面缺少 application.yaml 文件导致加载不到配置,从而运行失败。

解决办法

  • 方法一: 将src/main/resources/ 下面的配置文件拷贝一份到 src/test/resources 目录下。 但同一个配置需要维护两份,不建议。
  • 方法二:修改pom.xml 配置, 将src/main/resources 目录下的文件编译到test-classes 下面去


    image.png

重新运行, 会发现已经将src/main/resources 目录下的文件编译到test-classes 里面去了


image.png

更多干货,欢迎关注个人博客:http://mochi.website/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。