teamcity 说无法找到 MSTests 的测试 xxx

teamcity says Test xxx cannot be found for MSTests

为了我的生命,我花了数周的时间让 Teamcity 运行 我在我的单元测试项目中拥有的 MSTests,这是我正在构建的解决方案的一部分,但我失败了。

下面我列出了我尝试过的各种设置组合及其结果。

我最好的办法是让 Teamcity 了解我的测试,但它找不到它们。我有 tried several solutions 但所有这些都有两个结果。

这是供参考的 MSTests 设置屏幕:

如果我指定 .vsmdi 文件的相对路径,那么我会得到:

[Step 7/7] Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit
[18:00:13][Step 7/7] in directory: C:\TeamCity\buildAgent\workcaf6e77ce7b0d2a
[18:00:14][Step 7/7] Microsoft (R) Test Execution Command Line Tool Version 12.0.21005.1
[18:00:14][Step 7/7] Copyright (c) Microsoft Corporation. All rights reserved.
[18:00:14][Step 7/7]     
[18:00:14][Step 7/7] Loading C:\TeamCity\buildAgent\workcaf6e77ce7b0d2a\XXXX.Engine\XXXX.Engine.vsmdi...
[18:00:16][Step 7/7] Starting execution...
[18:00:16][Step 7/7] Test Check_blah_blah cannot be found.
[18:00:16][Step 7/7] Test blah_blah2 cannot be found.
[18:00:16][Step 7/7] No tests to execute.
[18:00:16][Step 7/7] Process exited with code 0

等所以 它知道 有哪些测试,但不能 运行 它们! :(

互联网上的其他解决方案,例如 (1) 为单元测试项目执行 MSBuild 步骤,(2) 指定 .testsettings 文件的路径 (3) 仅指定程序集列表 (4) 设置我自己的值mstest.exe 而不是 teamcity 环境变量的路径。 (5) 创建一个测试列表并指定它...等它们都会导致这样的结果:

[Step 4/4] Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit
[17:54:50][Step 4/4] in directory: C:\TeamCity\buildAgent\work\ccf38e24ca82b24
[17:54:58][Step 4/4] No assemblies, run configuration and test metadata were found (THIS LINE VARIES BASED ON MY SETTINGS BUT the rest is the same)
[17:55:01][Step 4/4] Microsoft (R) Test Execution Command Line Tool Version 10.0.30319.1
[17:55:01][Step 4/4] Copyright (c) Microsoft Corporation. All rights reserved.
[17:55:01][Step 4/4]     
[17:55:01][Step 4/4] Please specify tests to run, or specify the /publish switch to publish results. 
[17:55:01][Step 4/4] For switch syntax, type "MSTest /help"
[17:55:01][Step 4/4] Process exited with code 1
[17:55:01][Step 4/4] Step RunTests (MSTest) failed

这个东西应该如何配置?我有什么明显的遗漏吗?或者可能是一些愚蠢的事情?

请帮忙!

我认为您的问题可能是包含测试的 dll 的路径。您在根目录中指定了 dll,这意味着它应该在结帐目录中找到。如果您在 TC 上构建 dll,那么这不太可能。我们的测试设置如下:

所以我们告诉 TC 在当前配置目录的所有子目录中查找任何测试 dll。我们不使用 .vsmdi 文件来列出测试,所以我不确定这是否可行,但这是我首先要尝试的