UWP持续集成:如何通过MSTest命令行自动执行单元测试应用中的测试
嘿,我之前在GitLab CI上跑UWP单元测试也卡了好久,折腾出几个靠谱的方案,你可以挨个试试:
方案一:用vstest.console直接跑UWP测试包
别想着直接拿.dll跑,UWP测试是基于应用包的,必须先打包后测试。步骤大概是:
- 先把你的UWP测试项目编译成带
Test后缀的.appxbundle或.appx测试包(里面包含证书和部署所需的全部文件) - 然后用vstest.console指定这个包,加上几个关键参数:
vstest.console.exe "你的测试包路径/YourTestApp_x64.appxbundle" /Platform:x64 /InIsolation /Logger:trx
这里的参数得注意:
/Platform:x64:必须和你打包的平台完全一致,不然会直接报错/InIsolation:强制在独立进程里跑测试,避免和vstest的主进程冲突,UWP测试特别吃这个设置/Logger:trx:生成trx格式的测试报告,GitLab可以直接识别这个格式来展示测试结果
方案二:在GitLab CI里一体化构建+测试
你可以把构建测试包、安装证书、执行测试的步骤都写到.gitlab-ci.yml里,完全实现自动化的持续集成。给你个参考配置:
stages: - test uwp_unit_test: stage: test tags: - windows # 必须用Windows环境的runner,Linux/macOS跑不了UWP script: # 编译测试项目生成应用包,指定Release和x64平台 - msbuild YourSolution.sln /t:YourTestProjectName /p:Configuration=Release /p:Platform=x64 /p:AppxBundle=Always /p:AppxBundlePlatforms=x64 /p:AppxPackageDir=./AppPackages # 安装测试证书,不然UWP包没法正常部署 - certutil -addstore TrustedPeople "./AppPackages/YourTestApp_1.0.0.0_x64_Test/YourTestApp_1.0.0.0_x64.cer" # 执行测试 - vstest.console.exe "./AppPackages/YourTestApp_1.0.0.0_x64_Test/YourTestApp_1.0.0.0_x64.appxbundle" /Platform:x64 /InIsolation /Logger:trx artifacts: reports: junit: - "**/*.trx" # 把测试报告上传到GitLab,方便在界面上查看结果
几个容易踩的坑
- Runner环境必须配置到位:Windows runner得安装Visual Studio Build Tools,还要勾选「UWP开发工具」和「测试工具核心功能」,不然msbuild和vstest都跑不起来
- 开发者模式要开启:在runner的Windows机器上,必须打开系统设置里的「开发者模式」,不然没法部署未签名的UWP测试包
- 证书要安装正确:如果测试包用的是自签名证书,必须先安装到
TrustedPeople存储里,上面的certutil命令就是干这个的 - 平台要完全一致:构建、打包、测试的平台必须统一(比如全用x64),别一会儿x86一会儿x64,绝对会出问题
内容的提问来源于stack exchange,提问作者Chopping
相关产品推荐
相关产品推荐

