我在Linux上使用Docker Swarm来托管TeamCity。在我的实例中,我使用xUnit通过docker-compose文件运行集成测试。
当我运行我的测试时,我正在努力使用我需要使用的步骤来显示Tests选项卡(如果有一个失败的xUnit测试,反过来将停止我的构建)。我能够使用TeamCity 2017.1.2使其正常工作,但它拒绝在TeamCity 2017.2.4中工作。
我根据示例将“ENV TEAMCITY_PROJECT_NAME = fake”添加到我的Docker文件中(我认为这是我需要做的)。
如何获取测试选项卡,并在测试中断时让我的构建停止?!
感激不尽的任何帮助 - 我正在撕裂我的头发!
我也遇到了这个问题。 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中使用它,它似乎工作正常。它没有正确计算我的测试,但至少现在我很容易看到测试结果。
希望这能够帮到你。
谢谢。我确实设法让它最终运作。
我的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%