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 目录里面没有
-
结论: test-classes 目录下面缺少 application.yaml 文件导致加载不到配置,从而运行失败。
解决办法
- 方法一: 将src/main/resources/ 下面的配置文件拷贝一份到 src/test/resources 目录下。 但同一个配置需要维护两份,不建议。
- 方法二:修改pom.xml 配置, 将src/main/resources 目录下的文件编译到test-classes 下面去
重新运行, 会发现已经将src/main/resources 目录下的文件编译到test-classes 里面去了