【发布时间】:2016-02-19 16:31:57
【问题描述】:
如何从命令行运行通用 Windows (UWP) 单元测试项目?
我正在使用 MSTestFramework。
【问题讨论】:
标签: unit-testing mstest uwp
如何从命令行运行通用 Windows (UWP) 单元测试项目?
我正在使用 MSTestFramework。
【问题讨论】:
标签: unit-testing mstest uwp
简答:
vstest.console.exe /Platform:x64 AppPackages\UnitTestProject1_1.0.0.0_x64_Debug_Test\UnitTestProject1_1.0.0.0_x64_Debug.appx
长答案:
通过选择 Universal / Unit Test App (Universal 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.
为了能够从命令行运行测试,您需要使用具有受信任根的证书,或者使由 Visual Studio 生成的证书受信任。对于后者,在 Windows 资源管理器中双击 UnitTestProject1_TemporaryKey.pfx 文件,然后按照导入向导的默认步骤进行操作,但要更改两件事:
vstest.console.exe,现在它应该运行所有测试。【讨论】:
继@Marinov之后,UWP目前不支持测试App。只有 Library 可以测试。
因此,如果您想在 UWP 中进行单元测试,您必须将您的逻辑代码从 App 项目中提取出来,并将它们倒入新创建的库项目中。以后可以参考测试项目和原应用项目。
【讨论】:
我遵循了 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
如果您做对了所有事情,您应该会在窗口中看到您的单元测试!希望这会有所帮助!
【讨论】:
如果 Ivan Marinov 和 Kylaa 的答案都不适合您(就像不幸发生在我身上一样),请尝试使用 UWP 测试应用的 appxrecipe 作为目标文件,而不是 appx 本身。
例如:
vstest.console.exe testProject.build.appxrecipe /platform:x64
【讨论】: