Gitlab ci 作业 - Spring Boot 集成测试无法加载应用程序上下文

问题描述 投票:0回答:1

我正在尝试运行一个作业来执行我们的 ci 管道中的 spring boot 应用程序的测试,我是使用 gitlab ci 管道的新手,但我找到了一个 作业配置 来做到这一点。该项目包含单元测试和集成测试。就我而言,我将 mvn 命令更改为 ./mvnw 以便能够执行 verify 命令。我的工作是这样的:

verification:
  stage: verify
  allow_failure: true
  script:
    - chmod +x mvnw
    - ./mvnw verify
  artifacts:
    when: always
    reports:
      junit:
        - target/surefire-reports/TEST-*.xml

执行单元测试没有任何问题,但是尝试加载应用程序上下文的集成测试由于抛出错误而失败,因为某些属性的 application.properties 值被设置为使用环境变量,错误就像下面这样:

> SampleServiceTest.givenIdDeleteObject » IllegalState Failed to load
> ApplicationContext.......

> Caused by: java.lang.IllegalArgumentException: Could not resolve
> placeholder 'SHOW_SQL' in value "${SHOW_SQL}"

在项目的application.properties中,有一个属性集:

spring.jpa.show-sql=${SHOW_SQL}

已经存在的作业编译和部署应用程序没有任何错误,并且每次管道运行时它们都会通过

关于在这项新工作中执行集成测试,我有什么遗漏的吗?

spring-boot gitlab continuous-integration gitlab-ci integration-testing
1个回答
0
投票

问题似乎与未为 CI 管道中的集成测试设置

SHOW_SQL
环境变量有关。当运行加载应用程序上下文的测试时,您的应用程序尝试使用环境中的值解析
application.properties
中的占位符。

您可以通过在作业定义中添加

SHOW_SQL
environment
部分来定义 GitLab CI 作业中的
variables
环境变量吗,如下所示:

verification:
  stage: verify
  allow_failure: true
  script:
    - chmod +x mvnw
    - ./mvnw verify
  variables:
    SHOW_SQL: "true" # Or "false", depending on your desired configuration
  artifacts:
    when: always
    reports:
      junit:
        - target/surefire-reports/TEST-*.xml

通过在作业的

SHOW_SQL
部分中设置
variables
,它应该在执行集成测试期间可用作环境变量,从而允许 Spring Boot 正确解析
application.properties
中的占位符。

© www.soinside.com 2019 - 2024. All rights reserved.