SpringBoot和GitLab CI运行测试

时间:2018-09-04 12:44:04

标签: java spring-mvc spring-boot continuous-integration gitlab-ci

我只想使用GitLab CI进行测试,而不是部署我的应用程序。我设法汇编了这个.yml文件:

image: java:8

stages:
  - build
  - test

build:
  stage: build
  script: ./gradlew build
  artifacts:
    paths:
      - build/libs/myApp-4.0.0-SNAPSHOT.jar

unitTests:
  stage: test
  script:
    - ./gradlew test

在GitLab管道中,出现以下错误:

  

ar.com.sebasira.myApp.myAppApplicationTests> contextLoads失败   java.lang.IllegalStateException   引起原因:org.springframework.beans.factory.BeanCreationException   引起原因:org.springframework.beans.BeanInstantiationException   引起原因:org.springframework.beans.factory.BeanCreationException   引起原因:org.springframework.beans.BeanInstantiationException   造成原因:org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException

我猜想这可能与数据库有关,对吧?我需要在运行服务器所在的服务器中向该数据库提供凭据吗?

如果是这样,我应该怎么做?我目前正在使用application.properties文件来定义与数据库的连接。

还有一个问题……在.gitlab-ci.yml文件中,我需要将路径放置到.jar,但是每次我更新应用程序的版本时,该文件名都会更改。我需要手动更改吗?

1 个答案:

答案 0 :(得分:3)

在通过带有注释Output: 0) key=1, value={'a': 1, 'b': 2, 'c': 3} 1) key=2, value={'a': 10, 'b': 20, 'c': 30} @RunWith(SpringRunner.class)的测试(我认为这是从Spring Boot生成的标准测试)开始整个Spring上下文时,您必须提供一个数据源。您可以执行以下操作之一:

  • @SpringBootTest的{​​{1}}中指定数据库凭据(您可以在数据库服务器上提供测试数据库,因为我不会在每次测试时都连接到生产数据库)
  • 为此测试使用嵌入式application.properties
  • 使用https://www.testcontainers.org/为您的Spring应用程序测试提供真实,新鲜的数据库

关于GitlabCI问题:无论使用哪个版本:src/test/resources

,只要使用H2来匹配任何*