Teamcity 和单元测试 Windows 应用商店
Teamcity and Unit Testing Windows Store apps
我一直在努力为我的 Visual Studio 解决方案编译 Teamcity 9 和 运行 单元测试。
我有一个 Windows Phone 8.1(WinRT,不是 silverlight)项目和一个 "MyProject.Common.dll" 可移植 class 库具有通用功能。
我创建了一个“Windows Phone Unit Test App”项目。如果我 运行 它来自 VS,它 运行 在模拟器上 运行 并且 运行 我的单元测试。一切正常。
如果我想运行从控制台进行单元测试,我使用这个命令:
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe MyProject.Tests_1.0.0.1_x86.appx /InIsolation /settings:RunOnEmu.runsettings"
有效。它启动模拟器,部署 appx 和 运行 单元测试。
现在是问题:使用 Teamcity 9,我使用相同的命令配置命令行构建步骤 运行ner,我收到此错误:
Error: Could not start test run for the tests for Windows Phone app:
Unit tests for Windows Store apps cannot be run from a service or non
interactive process. Please run unit tests from an interactive
process..
有没有办法绕过这个错误?
为所需的从站更改 Jenkins 配置。在选项 "Launch Method" 中,现在可能是 "Let Jenkins control this slave as a windows service",但您需要 "JLNP"(Java 网络启动协议):
最后,我制作了一个自定义脚本来启动 vstest.console.exe
和 运行 单元测试应用程序,然后另一个构建步骤将测试结果加载到 TeamCity。
还有另一种绕过它的方法 - 运行 将代理构建为可执行文件而不是服务。您可以通过删除 TeamCity 服务来实现:
service.stop.bat
service.uninstall.bat
(所有 .bat 文件都在 TeamCity 构建代理的 bin 文件夹中)
然后创建新的 .bat 文件以将构建代理作为可执行文件启动:
C:\TeamCity\buildAgent\bin\agent.bat start
并将此文件的快捷方式放入 C:\Users\%user%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
的启动文件夹中,并按照 here 所述设置自动登录。这样构建代理将在重启后自动启动。
我找到了这个解决方案 here 以及一些关于 Windows 存储测试的其他常见问题和解决方案。
我一直在努力为我的 Visual Studio 解决方案编译 Teamcity 9 和 运行 单元测试。
我有一个 Windows Phone 8.1(WinRT,不是 silverlight)项目和一个 "MyProject.Common.dll" 可移植 class 库具有通用功能。
我创建了一个“Windows Phone Unit Test App”项目。如果我 运行 它来自 VS,它 运行 在模拟器上 运行 并且 运行 我的单元测试。一切正常。
如果我想运行从控制台进行单元测试,我使用这个命令:
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe MyProject.Tests_1.0.0.1_x86.appx /InIsolation /settings:RunOnEmu.runsettings"
有效。它启动模拟器,部署 appx 和 运行 单元测试。
现在是问题:使用 Teamcity 9,我使用相同的命令配置命令行构建步骤 运行ner,我收到此错误:
Error: Could not start test run for the tests for Windows Phone app: Unit tests for Windows Store apps cannot be run from a service or non interactive process. Please run unit tests from an interactive process..
有没有办法绕过这个错误?
为所需的从站更改 Jenkins 配置。在选项 "Launch Method" 中,现在可能是 "Let Jenkins control this slave as a windows service",但您需要 "JLNP"(Java 网络启动协议):
最后,我制作了一个自定义脚本来启动 vstest.console.exe
和 运行 单元测试应用程序,然后另一个构建步骤将测试结果加载到 TeamCity。
还有另一种绕过它的方法 - 运行 将代理构建为可执行文件而不是服务。您可以通过删除 TeamCity 服务来实现:
service.stop.bat
service.uninstall.bat
(所有 .bat 文件都在 TeamCity 构建代理的 bin 文件夹中)
然后创建新的 .bat 文件以将构建代理作为可执行文件启动:
C:\TeamCity\buildAgent\bin\agent.bat start
并将此文件的快捷方式放入 C:\Users\%user%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
的启动文件夹中,并按照 here 所述设置自动登录。这样构建代理将在重启后自动启动。
我找到了这个解决方案 here 以及一些关于 Windows 存储测试的其他常见问题和解决方案。