You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在项目目录中构建Trade Federation并运行自定义测试用例

如何在自有项目中构建并运行Trade Federation测试用例

没问题,我来一步步帮你搞定在/vendor/xyz/packages/apps/MyApp/test目录下使用Trade Federation(TF)运行测试的流程:

1. 先构建你的应用和测试APK

首先得确保主应用APK和测试APK都已编译完成:

  • 切换到你的应用根目录:
    cd /vendor/xyz/packages/apps/MyApp
    
  • 构建主应用APK:
    mm
    
  • 构建测试APK(如果test模块是独立的):
    cd test
    mm
    
    编译完成后,APK文件会生成在out/target/product/<你的设备目标>/data/app/目录下,比如MyApp/MyApp.apk和MyAppTest/MyAppTest.apk。

2. 确认Trade Federation环境可用

既然你已经能运行TF核心测试,环境应该已经就绪,但可以验证一下TF命令是否在PATH中:

which tradefed

如果返回路径(通常是out/host/linux-x86/bin/tradefed),说明没问题;如果没找到,就用绝对路径调用。

3. 运行测试的两种方式

方式一:直接用命令行运行单个/指定测试

如果只想快速运行某个测试类或方法,可以用singleCommand模式:

tradefed run singleCommand \
  --command "instrument \
    -w \
    -p /out/target/product/<你的设备目标>/data/app/MyAppTest/MyAppTest.apk \
    -I /out/target/product/<你的设备目标>/data/app/MyApp/MyApp.apk \
    -c com.xyz.myapp.test.YourTestClass \
    -e debug false"

参数说明:

  • -w:等待测试完成
  • -p:指定测试APK的路径
  • -I:指定主应用APK的路径(如果测试依赖主应用)
  • -c:指定要运行的测试类(可省略,会运行所有测试)
  • -e debug false:关闭调试模式(按需调整)

方式二:使用TF配置文件批量运行测试

如果需要自定义测试参数、批量运行测试或复用配置,推荐编写TF配置文件:

  1. 在/vendor/xyz/packages/apps/MyApp/test目录下创建my_app_tf_config.xml,示例内容:
<configuration description="MyApp Trade Federation Test Config">
  <test class="com.android.tradefed.testtype.InstrumentationTest">
    <option name="apk" value="/out/target/product/<你的设备目标>/data/app/MyAppTest/MyAppTest.apk"/>
    <option name="instrumentation-apk" value="/out/target/product/<你的设备目标>/data/app/MyApp/MyApp.apk"/>
    <option name="package" value="com.xyz.myapp.test"/>
    <!-- 可选:指定测试类或方法 -->
    <!-- <option name="class" value="com.xyz.myapp.test.YourTestClass"/> -->
  </test>
</configuration>
  1. 用配置文件运行测试:
tradefed run commandAndExit --config /vendor/xyz/packages/apps/MyApp/test/my_app_tf_config.xml

4. 额外注意事项

  • 确保你已经通过lunch命令选择了正确的设备目标(比如lunch aosp_x86_64-eng),否则编译路径可能不对。
  • 检查设备连接状态:adb devices,确保有可用的测试设备或模拟器。
  • 如果是本地单元测试(非Instrumentation),Trade Federation通常不是必需的,可以直接用./gradlew test(如果项目用Gradle),但如果必须用TF,需要调整测试类型配置。

内容的提问来源于stack exchange,提问作者Basim Sherif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:00:55