在Docker容器内执行JUnit测试

6
我希望用Docker构建一个测试环境,我想远程发送JUnit测试类(包括被测试的代码),执行测试并检索结果。
我找到一些文章介绍如何在Docker中进行数据库连接/写入的测试,但没有讲述如何执行测试并检索结果。
您有任何建议吗?您会如何实现这一目标?我对Jenkins了解不多,但它可能能够解决我的问题吗?还有其他好的框架可以使用吗?
2个回答

1
我发现一种使用Gradle的方法,可以实现你想要的功能。虽然你特别提到了JUnit作为测试框架,但我认为类似以下的方法也可以适用。
Dockerfile(我把我的命名为Dockerfile.UnitTests):
FROM gradle:jdk8 AS test-stage
WORKDIR /app
COPY . ./
RUN gradle clean
RUN gradle test

FROM scratch AS export-stage
COPY --from=test-stage /app/build/reports/tests/test/* /

然后我在 Windows 10 上的 Gitbash 中运行它:

> DOCKER_BUILDKIT=1 docker build -f Dockerfile.UnitTests --output type=tar,dest=UnitTests.tar .

这将生成一个tar文件,其中包含在html文件中显示的测试结果。

我在Gitlab CI/CD管道中执行了上述操作,然后将结果发送到Web API进行分析。

一些假设:

  1. 我的项目已设置Gradle构建,因此我从项目根目录 src/test/java/groupname/projectname/testfile.java 中获取结构
  2. 我正在Windows 10中工作,针对Linux容器并使用Gitbash。

0
在 Dockerfile 中,检出您的代码并执行“maven test”命令,将结果重定向到挂载目录上的文件中。 每次构建 Dockerfile 时,都会对项目进行单元测试。
使用 Docker 还可以使用“docker test”命令。我不知道是否有插件可在 Jenkins 上使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接