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

时间:2015-11-18 04:01:34

标签: unit-testing mstest uwp

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

我正在使用MSTestFramework。

4 个答案:

答案 0 :(得分:23)

简短回答:

vstest.console.exe /Platform:x64 AppPackages\UnitTestProject1_1.0.0.0_x64_Debug_Test\UnitTestProject1_1.0.0.0_x64_Debug.appx

答案很长:

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

    enter image description here

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

    • 将商店位置设置为本地计算机: enter image description here
    • 将证书放置到“受信任的根证书颁发机构”商店: enter image description here
    • 完成向导应该说“导入成功。”
  5. 尝试使用简短回答中的参数运行vstest.console.exe,现在它应该运行所有测试。

答案 1 :(得分:5)

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

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

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

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

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

    1. 构建过程将生成类似于 {SolutionDirectory} / AppPackages / {UnitTestTargetProjectName} / {Something_Test} 的目录。导航到此目录,在里面您将看到.cer安全证书。
    2. >cd AppPackages/Win10-UnitTests/Win10-UnitTests_1.1.0.0._x86_Test

      1. 在此生成的证书上运行CertMgr.exe。如果未运行具有管理员权限的命令提示符,则此步骤将失败。
      2. >"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
        2. >"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

https://github.com/Microsoft/vstest/issues/1393

https://github.com/Microsoft/vstest/issues/1477