MSTest.exe在命令行中找不到测试用例,但在VS2015 IDE中正常工作

4

我在Visual Studio 2015中添加了一个单元测试应用程序(Universal Windows)项目。在IDE的测试资源管理器中,它能够正确地发现和运行所有测试用例。但是当从命令行运行MSTest.exe时,它会提示“No tests to execute”。 执行的命令为

MSTest.exe /testcontainer:"F:\Projects\MyUnitTests\bin\Release\MyUnitTests.exe" /resultsfile:F:\testResults.trx

按照这里建议使用“vstest.console.exe”时结果相同。

此外,大多数在线示例都提供了一个dll文件给mstest。但是在vs2015的输出中没有创建任何dll文件。需要通过jenkins脚本执行此操作。有其他人遇到过这个问题吗?

1个回答

0

当您运行exe时,您应该会收到类似于以下警告的提示:

警告:Windows Store和Windows Phone应用程序的单元测试无法在appcontainer之外运行。创建应用程序包并以appcontainer模式运行测试。 http://go.microsoft.com/fwlink/?LinkId=254169

为了使用通用测试项目,您需要创建一个应用程序包,然后针对该包运行测试。要创建该包,请右键单击您的项目,然后选择Store=>Create App Packages

您将创建一个本地应用程序包,因此您可以选择No以回答上传到Windows商店的提示。

接下来,您将被提示填写输出位置、版本等信息...

在此屏幕上,确保您选择Never选项以生成应用程序包。

单击创建后,打开命令行到应用程序包创建的位置。您还需要安装证书。您可以使用certutil从命令行执行此操作:

certutil -addstore "Root" .\UnitTestProjectName_1.0.0.0_x86_Debug.cer

最后,现在您可以使用vstest.console.exe命令行针对应用程序包运行测试:

vstest.console.exe .\UnitTestProjectName_1.0.0.0_x86_Debug.appx /InIsolation

这篇微软的博客文章包含更多信息和其他故障排除技巧。尽管该博客文章标记为VS11的beta版本,但似乎其中大部分仍然适用。


感谢@john-koerner。它可以通过cmd工作。有几个疑问。1.现在,没有办法将dll用作vstest.console.exe的testSource(如大多数文档/博客所示) 2.如果我通过jenkins运行vstest.console.exe,我会收到一个错误“无法为Windows Store应用程序的单元测试启动测试运行:无法从服务或非交互式进程运行Windows Store应用程序的单元测试。请从交互式进程中运行单元测试。”。 3.是否有任何其他测试项目模板可以创建dll(可能在VS Enterprise中)。我正在使用VS Community版本。 - Raunak Yadav
如果你只需要一个单元测试DLL,那么有其他项目模板可以创建该DLL。如果你特别需要通用的DLL,那么你就需要使用这种方法。至于它为什么不能在Jenkins中运行,因为这种单元测试类型会创建UI,所以你需要以交互式用户身份运行它。 - John Koerner

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