从命令行运行通用Windows单元测试

Jam*_*ing 15 unit-testing mstest uwp

如何从命令行运行通用Windows(UWP)单元测试项目?

我正在使用MSTestFramework.

Iva*_*nov 23

简短回答:

vstest.console.exe /Platform:x64 AppPackages\UnitTestProject1_1.0.0.0_x64_Debug_Test\UnitTestProject1_1.0.0.0_x64_Debug.appx
Run Code Online (Sandbox Code Playgroud)

答案很长:

  1. 通过选择通用/单元测试应用程序(通用Windows)模板来创建项目:

    在此输入图像描述

  2. 在解决方案文件所在的文件夹中使用命令行构建它

    msbuild /p:Platform=x64;Configuration=Debug

  3. 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.
    
    Run Code Online (Sandbox Code Playgroud)
  4. 为了能够从命令行运行测试,您需要使用具有受信任root权限的证书,或者使visual studio生成的证书受信任.对于后者,双击UnitTestProject1_TemporaryKey.pfxWindows资源管理器中的文件,并按照导入向导默认步骤,但更改两件事:

    • 将商店位置设置为本地机器: 在此输入图像描述
    • 将证书放在受信任的根证书颁发机构存储中: 在此输入图像描述
    • 完成向导应该说"导入成功了".
  5. 尝试vstest.console.exe使用简答题中的参数运行,现在它应该运行所有测试.

  • 很有用的解决方案 这给我节省了很多时间,谢谢! (2认同)

Kyl*_*aaa 6

我遵循了Ivan Marinov的回答,但是我需要一个纯命令行解决方案。一旦您的UWP单元测试项目开始工作并且准备好自动化,请按照以下步骤操作:

(我将我的解决方案命名为Win10Universal,并将我的单元测试项目命名为Win10-UnitTests。您将需要用自己的示例替换示例中的名称)

  1. 以管理员身份打开命令提示符,并导航到与解决方案相同的目录。

  2. 在您的解决方案上运行MSBuild.exe。

>"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" Win10Universal.sln /p:Platform=x86;Configuration=Release

  1. 构建过程将生成类似于 {SolutionDirectory} / AppPackages / {UnitTestTargetProjectName} / {Something_Test}的目录。导航到此目录,然后在其中将看到.cer安全证书。

>cd AppPackages/Win10-UnitTests/Win10-UnitTests_1.1.0.0._x86_Test

  1. 在生成的证书上运行CertMgr.exe。如果您没有以管理员权限运行命令提示符,则此步骤将失败。

>"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

  1. 在此目录中的.appx文件上运行VSTest.Console.exe

>"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

如果您已正确完成所有操作,则应该在窗口中看到列出的单元测试!希望这可以帮助!