如何从命令行运行通用Windows(UWP)单元测试项目?
我正在使用MSTestFramework。
答案 0 :(得分:23)
简短回答:
vstest.console.exe /Platform:x64 AppPackages\UnitTestProject1_1.0.0.0_x64_Debug_Test\UnitTestProject1_1.0.0.0_x64_Debug.appx
答案很长:
通过选择通用/单元测试应用程序(通用Windows)模板来创建项目:
使用命令行在解决方案文件所在的文件夹
中构建它 msbuild /p:Platform=x64;Configuration=Debug
在简短回答中尝试运行上面的vstest.console.exe
命令。它将失败,给出以下错误消息:
error 0x800B0109: The root certificate of the signature in the app package or bundle must be trusted..
For more details look into Event Viewer under Applications and Services Logs -> Microsoft -> Windows -> AppXDeployment-Server -> Microsoft-Windows-AppXDeploymentServer/Operational.
为了能够从命令行运行测试,您需要使用具有受信任root权限的证书,或者使visual studio生成的证书受信任。对于后者,双击Windows资源管理器中的UnitTestProject1_TemporaryKey.pfx
文件,并按照导入向导的默认步骤进行操作,但更改两件事:
vstest.console.exe
,现在它应该运行所有测试。答案 1 :(得分:5)
我遵循了Ivan Marinov的回答,但我需要一个纯粹的命令行解决方案。一旦您的UWP单元测试项目工作并且您已准备好自动化,请按照以下步骤操作:
(我将我的解决方案命名为Win10Universal和我的单元测试项目Win10-UnitTests。您需要用自己的名称替换我的示例中的名称)
以管理员身份打开命令提示符并导航到与解决方案相同的目录。
在您的解决方案上运行MSBuild.exe。
>"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" Win10Universal.sln /p:Platform=x86;Configuration=Release
>cd AppPackages/Win10-UnitTests/Win10-UnitTests_1.1.0.0._x86_Test
>"C:\Program Files (x86)\Windows Kits\10\bin\x86\certmgr.exe" -add Win10-UnitTests_1.1.0.0_x86_Release.cer -s -r localmachine root
>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" Win10-UnitTests_1.1.0.0_x86_Release.appx /Platform:x86
如果你做的一切正确,你应该会在窗口中看到你的单元测试!希望这有帮助!
答案 2 :(得分:0)
在@Marinov之后,UWP目前不支持测试 App 。只有 Library 可以测试。
因此,如果您想在UWP中进行单元测试,则必须从App项目中提取逻辑代码并将它们转移到新创建的库项目中。之后可以引用测试项目和原始应用项目。
答案 3 :(得分:0)
如果Ivan Marinov和Kylaa的答案都对您不起作用(不幸的是发生在我身上),请尝试使用UWP测试应用的appxrecipe作为目标文件,而不是appx本身。
例如:
vstest.console.exe testProject.build.appxrecipe /platform:x64