在Docker容器中执行JUnit测试

时间:2017-01-15 22:38:04

标签: java docker junit

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

我找到了一些文章,解释了如何使用docker来测试redis中的数据库连接/写入,但不是如何简单地让我的测试在docker上执行并检索结果。

您对如何实现这一目标有什么建议吗? 我不太了解詹金斯,但这可能会解决我的问题吗? 外面有什么好的框架吗?

2 个答案:

答案 0 :(得分:0)

在dockerfile中,检查代码并执行" maven test"命令,将结果重定向到已装入目录中的文件中。 每次构建dockerfile时,都会对项目进行单元测试。

使用docker你还有一个#34; docker test"命令。我不知道是否有一个插件可以在jenkins上使用它。

答案 1 :(得分:0)

我发现工作的一种方法(使用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. 我正在针对Linux容器并使用Gi​​tbash的Windows 10中工作。