Jenkins 和 运行 AndroidJUnitRunner 仪器测试
Jenkins and Running AndroidJUnitRunner Instrumentation Tests
我有一个 Android 应用程序,我正在尝试使用 Jenkins 进行设置。我已经使用 Android 仿真器插件启动了一个仿真器,并使用 gradle 脚本构建了项目,但是我无法将它变成 运行 我写的一个简单测试利用 AndroidJUnitRunner。
Jenkins 的输出如下所示...
+ adb shell pm list instrumentation
instrumentation:com.android.emulator.connectivity.test/android.test.InstrumentationTestRunner (target=com.android.emulator.connectivity.test)
instrumentation:com.android.emulator.gps.test/android.test.InstrumentationTestRunner (target=com.android.emulator.gps.test)
instrumentation:com.android.smoketest.tests/com.android.smoketest.SmokeTestRunner (target=com.android.smoketest)
instrumentation:com.android.smoketest.tests/android.test.InstrumentationTestRunner (target=com.android.smoketest)
instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis)
[Short Sounds] $ /bin/sh -xe /tmp/hudson7415767398022941631.sh
+ adb shell am instrument -w com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner}
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner
如您所见,我已经通过 shell 命令列出了 adb 工具。 Android在列表中找不到 JUnitRunner。我半肯定它应该在那里正常工作。
我在 build.gradle 文件中添加了适当的配置标签...即...
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
我还添加了这些依赖项。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
androidTestCompile 'com.android.support.test:runner:0.2'
// Set this dependency to use JUnit 4 rules
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}
如果它对这里有帮助,我正在尝试 运行。这只是一个我希望失败的简单单元测试。
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import com.sloths.speedy.shortsounds.view.MainActivity;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class InitialFailingTest extends ActivityInstrumentationTestCase2<MainActivity> {
public InitialFailingTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Test
public void initialFailingTestForJenkins() {
assertTrue(false);
}
}
我怎样才能让 Jenkins 实际 运行 我的单元测试?非常感谢任何帮助。
尝试告诉詹金斯 运行 "gradle connectedAndroidTest" 任务
您还可以执行 connectedAndroidTest
的准备步骤,即
./gradlew installDebug installDebugAndroidTest
那么当您执行 pm list instrumentation
时,您的测试包和 AndroidJUnitRunner 应该会出现。稍后当您拥有更大的测试套件并且想要调用具有更多选项(例如指定测试大小)的 am instrument
命令时可能会有所帮助。
我有一个 Android 应用程序,我正在尝试使用 Jenkins 进行设置。我已经使用 Android 仿真器插件启动了一个仿真器,并使用 gradle 脚本构建了项目,但是我无法将它变成 运行 我写的一个简单测试利用 AndroidJUnitRunner。
Jenkins 的输出如下所示...
+ adb shell pm list instrumentation
instrumentation:com.android.emulator.connectivity.test/android.test.InstrumentationTestRunner (target=com.android.emulator.connectivity.test)
instrumentation:com.android.emulator.gps.test/android.test.InstrumentationTestRunner (target=com.android.emulator.gps.test)
instrumentation:com.android.smoketest.tests/com.android.smoketest.SmokeTestRunner (target=com.android.smoketest)
instrumentation:com.android.smoketest.tests/android.test.InstrumentationTestRunner (target=com.android.smoketest)
instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis)
[Short Sounds] $ /bin/sh -xe /tmp/hudson7415767398022941631.sh
+ adb shell am instrument -w com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner}
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner
如您所见,我已经通过 shell 命令列出了 adb 工具。 Android在列表中找不到 JUnitRunner。我半肯定它应该在那里正常工作。
我在 build.gradle 文件中添加了适当的配置标签...即...
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
我还添加了这些依赖项。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
androidTestCompile 'com.android.support.test:runner:0.2'
// Set this dependency to use JUnit 4 rules
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}
如果它对这里有帮助,我正在尝试 运行。这只是一个我希望失败的简单单元测试。
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import com.sloths.speedy.shortsounds.view.MainActivity;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class InitialFailingTest extends ActivityInstrumentationTestCase2<MainActivity> {
public InitialFailingTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Test
public void initialFailingTestForJenkins() {
assertTrue(false);
}
}
我怎样才能让 Jenkins 实际 运行 我的单元测试?非常感谢任何帮助。
尝试告诉詹金斯 运行 "gradle connectedAndroidTest" 任务
您还可以执行 connectedAndroidTest
的准备步骤,即
./gradlew installDebug installDebugAndroidTest
那么当您执行 pm list instrumentation
时,您的测试包和 AndroidJUnitRunner 应该会出现。稍后当您拥有更大的测试套件并且想要调用具有更多选项(例如指定测试大小)的 am instrument
命令时可能会有所帮助。