如何通过命令行构建Unity AQA PlayMode测试的UnityTestRunner APK?
如何通过命令行生成UnityTestRunner的Android测试APK(用于CI/CD流水线)
我正在使用「Automated QA」包(AQA)为游戏录制Unity PlayMode测试,目前能在编辑器或已连接的Android设备上运行测试,但无法通过命令行生成UnityTestRunner的.apk安装包,需要实现该功能以用于CI/CD流水线,自动构建安装包并在本地或云端多台Android设备上测试。
当前已实现的操作
- 生成录制文件.json并导出完整测试用例
- 可在Unity编辑器的Test Runner窗口中运行选中的PlayMode测试(支持编辑器内及Android设备)
- 可通过PowerShell命令行启动测试:
$process = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\2020.3.26f1\Editor\Unity.exe" ` -ArgumentList ` "-logFile testLogFile.log` -projectPath ./MyGame/ ` -testResults testResults/results.xml ` -runTests ` -testPlatform PlayMode "
将-testPlatform PlayMode替换为-testPlatform Android即可在已连接的Android手机上运行测试。
需求痛点
能在Unity编辑器中通过「TestRunner -> BuildAllTests (Android)」手动构建测试APK,但不知道如何通过命令行实现该操作。
思路更新
了解到Unity部分GUI操作可通过EditorApplication.ExecuteMenuItem脚本化,不确定是否可用于自动化构建测试运行器APK。
解决方案:通过命令行调用自定义编辑器脚本实现构建
步骤1:编写自定义编辑器脚本
在项目的Assets/Editor目录下创建BuildTestApk.cs脚本,内容如下:
using UnityEditor; public class BuildTestApk { [MenuItem("Tools/BuildAndroidTestApk")] public static void BuildAndroidTestApk() { // 调用Test Runner的BuildAllTests (Android)菜单项 EditorApplication.ExecuteMenuItem("Window/General/Test Runner/PlayMode/BuildAllTests (Android)"); // CI/CD场景下,可添加自动退出逻辑 // EditorApplication.Exit(0); } }
注意:菜单项路径需与Unity编辑器中Test Runner的实际路径完全匹配,不同Unity版本可能略有差异,可通过
Window -> General -> Test Runner菜单确认准确路径。
步骤2:通过命令行执行构建
使用PowerShell运行以下命令,Unity会启动并执行自定义脚本完成测试APK的构建:
$process = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\2020.3.26f1\Editor\Unity.exe" ` -ArgumentList ` "-logFile testLogFile.log` -projectPath ./MyGame/ ` -executeMethod BuildTestApk.BuildAndroidTestApk ` -quit"
关键参数说明:
-executeMethod BuildTestApk.BuildAndroidTestApk:指定要执行的编辑器静态方法-quit:构建完成后自动关闭Unity,适合CI/CD无人值守场景
额外优化建议
- 若需自定义APK输出路径,可在脚本中扩展逻辑,结合
PlayerSettings配置或BuildPipeline.BuildPlayerAPI实现,也可提前在Unity项目设置中固定输出目录 - 在CI/CD流水线中,可将构建后的APK路径设为环境变量,后续直接用于分发到本地或云端多台Android设备执行测试
内容的提问来源于stack exchange,提问作者mcExchange
相关产品推荐
相关产品推荐

