没有可执行的测试-msTest。

23

我正在尝试使用MSTest在命令行上运行.NET单元测试。

我的命令是:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" /testcontainer:"full path of dll" /resultsfile:TestResults.trx

运行时返回:

开始执行...
没有测试需要执行。

在VS 2012 IDE中,单元测试可以完美运行。

请问我需要做什么来使它在命令行上运行?

7个回答

35

谢谢,这确实帮助我顺利完成了。我正在使用.NET Framework 4.6+。 - Leandro Gabriel Casas
如果您使用.NET Core,则命令为:dotnet test my.tests.assembly.dll - Mladen B.

6

事实证明我需要使用nunit-console,因为我的测试是用nunit框架编写的。

我想说还是要不断学习吧。


5
  1. 创建一个 .Net Framework 单元测试项目。

  2. 管理 nuget 包 -> 移除 "MSTest.TestFramework" 和 "MSTest.TestAdapter" nuget 包。

  3. 添加对 "Microsoft.VisualStudio.QualityTools.UnitTestFramework", 10.0.0.0 版本的程序集引用。

  4. 重新生成项目并验证输出路径(bin\debug)没有任何 _MSTest_TestAdapter*.dll 程序集。


3
我收到了相同的消息“没有可执行的测试”。我发现这是我自己的愚蠢错误——在命令行中,我使用了MVCProj09292016.dll(我的项目DLL)作为testcontainer:/,而不是使用MVCProj09292016.Tests.dll(我的测试项目程序集)。
总之,请检查您在命令行中是否使用了正确的dl名称:它应该是您的MStest项目程序集,在我的情况下是MVCProj09292016.Tests.dll。

1
尝试使用vstest.console.exe。
例子:

vstest.console.exe [assembly.dll] /logger:trx;LogFileName=[filename].trx

1.打开交叉工具命令提示符(使用Windows搜索)
选择:VS 2009的交叉工具命令提示符

[1]
enter image description here
2.打开交叉工具命令行。
3.导航到您项目的Bin文件夹。
4.将Bin文件夹的路径复制/粘贴到交叉工具命令行中。
例如:

enter image description here 然后运行以下命令:
vstest.console.exe [assembly.dll] /logger:trx;LogFileName=[filename].trx


0

当我使用 XUnit 时,我遇到了同样的问题。问题是我没有为该项目包含 xunit.runner。这不是很明显,因为它只会在 packages.config 和 csproj 文件中添加引用,而不会在 Visual Studio 引用列表中显示。但是,如果没有运行程序,MSTest 如何知道如何运行 xunit 测试,这在某种程度上仍然是显而易见的。


你如何知道是否已将 xunit 包含在项目中?在我的情况下,我有一个包含所有测试项目的解决方案,在 Solution Explorer 中输入 xunit 时,什么也没有显示出来。 - Dominique

-2

试试这个:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" /testcontainer:full path of dll /resultsfile:TestResults.trx

在路径中不要包含双引号 " "


5
它解决了我的问题,因为现在它会抛出一个不同的错误。它似乎在抱怨目录名称中的空格。谢谢。 - mogoli
2
所以我尝试了不加引号,将我的项目移动到没有空格的目录中,但它仍然显示“没有可执行的测试。” - mogoli
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" /testcontainer:full\path\to\dll /resultsfile:TestResults.trx - mogoli
在文件路径中使用 \ - mogoli
2
请注意,这仅适用于 .Net Framework,而不适用于 .NetCore 或 .NetStandard!请查看我的答案:https://dev59.com/pWEi5IYBdhLWcg3wndVw#52964726 - FranzHuber23
2
FranzHuber23是正确的。对于.Net Core,您只需运行dotnet test MY_UNIT_TEST_PROJECT.csproj - FoggyDay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接