Java 在Docker容器内执行JUnit测试

Java 在Docker容器内执行JUnit测试,java,docker,junit,Java,Docker,Junit,我想用Docker构建一个测试环境,在那里我可以远程发送JUnit测试类(包括测试的代码),执行测试并检索结果 我找到了一些文章,解释了如何使用docker在redis中测试DatabaseContection/writing,但没有解释如何简单地让我的测试在docker上执行并检索结果 你有什么建议如何实现这一目标? 我对詹金斯了解不多,但这能解决我的问题吗? 在dockerfile中,签出代码并执行“maven test”命令,将结果重定向到挂载目录中的文件中。 每次构建dockerfile

我想用Docker构建一个测试环境,在那里我可以远程发送JUnit测试类(包括测试的代码),执行测试并检索结果

我找到了一些文章,解释了如何使用docker在redis中测试DatabaseContection/writing,但没有解释如何简单地让我的测试在docker上执行并检索结果

你有什么建议如何实现这一目标? 我对詹金斯了解不多,但这能解决我的问题吗?
在dockerfile中,签出代码并执行“maven test”命令,将结果重定向到挂载目录中的文件中。 每次构建dockerfile时,都要对项目进行单元测试


使用docker,您还可以使用“docker测试”命令。我不知道是否有一个插件可以在jenkins上使用它。

我发现一种有效的方法(使用Gradle)如下所示。我知道您特别引用JUnit作为您的测试框架,但我实际上认为类似的东西可以工作

Dockerfile(我称我的
Dockerfile.UnitTests
):

然后,我使用(在Windows 10上的Gitbash中)运行此命令:

>DOCKER\u BUILDKIT=1 DOCKER build-f Dockerfile.UnitTests--output type=tar,dest=UnitTests.tar。
这将生成一个tar文件,其中包含html文件中显示的测试结果

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

有几个假设:
  • 我的项目是为Gradle构建而设置的,因此我拥有项目根目录的结构
    src/test/java/groupname/projectname/testfile.java
  • 我在Windows10中工作,目标是Linux容器并使用Gitbash
  • 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/* /