问题 connectedAndroidTest如何运行特定的测试


我是一家初创公司的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'将构建标记为失败 完成:失败


949
2018-04-18 15:50


起源

你的问题不够明确。您的技术理解似乎限制您无法理解问题的原因。我建议查看一些教程,然后回到这里,提出一个更具体的问题。 - Alex.F
@ Alex.F道歉,我同意这个问题有点含糊不清。基本上,我正在寻找一种方法来只运行Jenkins工作中的特定测试。如果我使用Maven构建,我知道有一种方法可以使用标记(注释)运行特定的测试。 Gradle构建也有类似的方法吗? - jellyBeans


答案:


似乎你的jenkins用户无法看到android adb因此构建失败。将adb添加到系统路径或指向它的确切位置。

至于通过gradle命令运行特定测试,下面是一个例子:

./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest#testMethodName

取自 这里 我稍作修改。你的 connectedAndroidtest 命令可以根据测试风味的存在而变化。


14
2018-04-19 18:16



谢谢你。我收到以下错误com.android.builder.testing.ConnectedDevice>未找到测试。[Google Nexus 5 - 5.1.0 - API 22 - 1080x1920 - 5.1]失败未找到测试。这通常意味着您的测试类不是您的测试运行器期望的形式(例如,不从TestCase继承或缺少@Test注释)。 :应用:connectedDebugAndroidTest - jellyBeans
@jellyBeans检查包名如何 com.android.builder.testing。它应该是您运行此命令后将获得的程序包之一 adb shell pm list instrumentation。 - denys
我认为,这个错误与模拟器有关。当我使用不同的模拟器时,不再看到此错误。但是,还有另一个异常发生INSTRUMENTATION_STATUS:错误=无法找到以下内容的检测信息:ComponentInfo {com.company.project.SignUpScreeTest / android.support.test.runner.AndroidJUnitRunner} - jellyBeans
这是我在build.gradle文件中得到的testInstrumentationRunner“android.support.test.runner.AndroidJUnitRunner” - jellyBeans
不应该 com.company.project.test。运行此命令后检查已检测的程序包 adb shell pm list instrumentation 并将其复制到gradle task命令。 - denys


这是我在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


0
2018-04-21 13:17