我是一家初创公司的QA。我的开发人员在Android项目中设置了Instrumentation测试。他还设置Jenkins Jobs在CI环境中运行这些测试。
这是在Build - > Invoke Gradle脚本下的Jenkins作业的“任务”字段中给出的命令。
clean assembleDebug connectedAndroidTest testDebug
我想创建自己的Jenkins作业来运行不同类型的测试。有没有办法可以通过运行“connectedAndroidTest”命令来过滤我的测试?
我尝试使用如下所示的shell脚本,但它不起作用。
adb shell am instrument -w /
我收到以下错误消息:
[执行Smoke测试套件] $ / bin / bash -xe /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh
+ adb shell am instrument -w''class com.draysonwireless.airmapandroid.rewards / BonusTest.java
/var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh:line 2:adb:command not found
构建步骤'执行shell'将构建标记为失败
完成:失败
似乎你的jenkins用户无法看到android adb因此构建失败。将adb添加到系统路径或指向它的确切位置。
至于通过gradle命令运行特定测试,下面是一个例子:
./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest#testMethodName
取自 这里 我稍作修改。你的 connectedAndroidtest 命令可以根据测试风味的存在而变化。
这是我在Jenkins工作中使用的shell脚本:
export PATH=$PATH:/Users/Shared/Jenkins/Library/Android/sdk/platform-tools
adb shell am instrument -w -r -e debug false -e class com.company.project.test.SmokeTest com.company.project.debug.test/android.support.test.runner.AndroidJUnitRunner
文件夹结构应如下所示:
app - > src - > androidTest - > java - > com.company.project - > test - > TestClass