I've got an Android application which I'm trying to set up with Jenkins. I've got it booting up an emulator using the Android Emulator Plugin, and building the project with a gradle script, but I can't get it to run a simple test I wrote utilizing the AndroidJUnitRunner.
My output from Jenkins looks like this...
+ 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
As you can see I've listed the adb instrumentation via a shell command. AndroidJUnitRunner is no where to be found in the list. I'm semi-positive it should be there to work correctly.
I've added the appropriate config tag in the build.gradle file... ie...
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
I've also added these dependencies.
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'
}
And in case its helpful here is the test I'm trying to run. It is just a simple unit test that I would like to have fail.
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);
}
}
How can I get Jenkins to actually run my unit test? Any help is greatly appreciated.
Try tell jenkins to run "gradle connectedAndroidTest" task
You can also do the preparation steps for connectedAndroidTest
which is
./gradlew installDebug installDebugAndroidTest
Then your test package and the AndroidJUnitRunner should show up when you do pm list instrumentation
. Might be helpful when later on when you have a larger test suite and you want to invoke am instrument
command with more options (like specifying test size).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With