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

问题描述 投票:0回答:2

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

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

我根据示例将“ENV TEAMCITY_PROJECT_NAME = fake”添加到我的Docker文件中(我认为这是我需要做的)。

如何获取测试选项卡,并在测试中断时让我的构建停止?!

感激不尽的任何帮助 - 我正在撕裂我的头发!

docker testing teamcity xunit
2个回答
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中使用它,它似乎工作正常。它没有正确计算我的测试,但至少现在我很容易看到测试结果。

希望这能够帮到你。


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。我已经将Docker Compose v1.22.0安装到我的TeamCity代理中。

现在我只需要弄清楚当测试覆盖率不够高时如何使构建失败。请看这里我的下一个问题:Breaking the build in TeamCity if .NET Core unit tests running under Docker have code-coverage less than 90%

© www.soinside.com 2019 - 2024. All rights reserved.