Docker / TeamCity / xUnit - 缺少测试选项卡,测试失败不会停止构建

时间:2018-05-21 02:07:39

标签: docker testing teamcity xunit

我在Linux上使用Docker Swarm来托管TeamCity。在我的实例中,我使用xUnit通过docker-compose文件运行集成测试。

我正在努力完成在运行测试时我需要使用的步骤来显示测试选项卡(如果有一个失败的xUnit测试,反过来会停止我的构建)。我能够使用TeamCity 2017.1.2使其正常工作,但它拒绝在TeamCity 2017.2.4中工作。

我已添加" ENV TEAMCITY_PROJECT_NAME =假"根据示例我的Docker文件(我认为这是我需要做的)。

如何恢复“测试”标签,并在测试中断时让我的构建停止?!

感激地收到了任何帮助 - 我把头发撕成了这个!

2 个答案:

答案 0 :(得分:0)

我也遇到了这个问题。 Nick Adcock在https://devblog.bango.com/2017/10/13/build-in-docker-test-with-net-core-report-to-teamcity/

发布了一个很好的解决方案

他提供了microsoft / dotnet:2.0-sdk图像的更新版本,该图像以TeamCity可以读取,使用和呈现的格式输出测试结果。我在TeamCity 2017.2.4中使用它,它似乎工作正常。它没有正确计算我的测试,但至少现在我很容易看到测试结果。

希望这能够帮到你。

答案 1 :(得分:0)

谢谢。我确实设法使它最终运行。

我的Dockerfile的结尾如下:

FROM microsoft/dotnet:2-sdk

...
...

# Set the flag to tell TeamCity that these are unit tests:
ENV TEAMCITY_PROJECT_NAME = ${TEAMCITY_PROJECT_NAME}

# Run the tests:
ENTRYPOINT ["dotnet", "test", "--verbosity=normal"]

我还将此添加到了我正在使用的docker-compose文件中:

version: '3.6'
  ...
  ...
  steve.core.tests:
    image: steve.core.tests:tests
      build:
        context: .
        dockerfile: Dockerfile-run-tests
      environment:
        - TEAMCITY_PROJECT_NAME

可能是腰带和括号,但它似乎起作用。

我正在使用具有相同代理版本的TeamCity服务器版本2018.1.1。我已经在TeamCity代理中安装了Docker Compose v1.22.0。

现在,我只需要解决在测试覆盖率不够高的情况下如何使构建失败的问题。我的下一个问题请参见此处:Breaking the build in TeamCity if .NET Core unit tests running under Docker have code-coverage less than 90%