我有一个正常的Quarkus Restassured Test,可以在我的工作站上很好地进行本地工作:
@Test
public void testHelloEndpoint() {
given()
.when().get("/ifc")
.then()
.statusCode(200)
.body(containsString("hello"));
}
但是,当我在Gitlab CI上使用来自镜像image: maven:3.6.3-jdk-11
的docker容器运行此文件时,它会挂起。我想,测试想在容器内部连接到locahost:8081,这是行不通的。如何解决呢?
gitlab-ci:
image: maven:3.6.3-jdk-11
variables:
MAVEN_CLI_OPTS: "-s m2-settings.xml --batch-mode"
#MAVEN_CLI_OPTS: ""
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
#- .m2/repository/
#- target/
build:
stage: build
script:
- mvn $MAVEN_CLI_OPTS compile
test:
stage: test
script:
- java --version
- mvn $MAVEN_CLI_OPTS install
deploy:
stage: deploy
script:
- mvn $MAVEN_CLI_OPTS deploy
only:
- master
when: manual
[当我在本地运行相同的docker映像(不是gitlab)时,出现以下错误:
[ERROR] Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 61.157 s <<< FAILURE! - in ch.siemens.bt.ifc.ResourceTest
[ERROR] testGenerateEndpoint Time elapsed: 0.073 s <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
[ERROR] testTransformEndpoint Time elapsed: 0.001 s <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class io.quarkus.test.common.RestAssuredURLManager
[ERROR] testHelloEndpoint Time elapsed: 0.001 s <<< ERROR!
java.lang.NoClassDefFoundError: Could not initialize class io.quarkus.test.common.RestAssuredURLManager
quay.io/quarkus/centos-quarkus-maven:20.0.0-java11
是可行的。我不明白为什么-因为我没有做原生版本。