AndroidEnthusiast
AndroidEnthusiast

Reputation: 6657

Run android unit tests & instrumentation tests on Jenkins (Gradle)

I have some unit and instrumentation tests in my androidTest folder.

I'm trying to run these tests on my local Jenkins.

I've successfully configured my project with Jenkins and I've also created an emulator for the instrumentation tests.

So far all the resources I've seen only focus on ant and earlier versions of Gradle. The syntax for writing tasks has slightly changed in the current version and I'm confused about this.

Here is my build.gradle file:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "myPackageName"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}


dependencies {
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:6.5.87'
}

Upvotes: 11

Views: 15583

Answers (3)

DVG
DVG

Reputation: 898

You can write a jenkis script like this:

stage('Build & Install') {
//Build the apk and the test apk which will run the tests on the apk
                sh 'chmod +x gradlew && ./gradlew --no-daemon --stacktrace clean :app:assembleDevDebug :app:assembleDevDebugAndroidTest'
            }

 stage('Tests') {
//Start all the existing tests in the test package 
sh './gradlew --no-daemon --debug :app:connectedDevDebugAndroidTest' 
}

This should install the apk and the test apk into the device and start the test cases in the test apk on installation.

Here I have given DevDebug as I have a flavor constant called Dev and build type is Debug. If you don't have any of those, you don't use them.

Upvotes: 1

Shivaraj Patil
Shivaraj Patil

Reputation: 8364

Create a job in junkins and (configure adb path) add this command to build steps as execute shell command or as a windows bat cmd

$ adb shell am instrument -w com.xyz.abc.test/android.test.InstrumentationTestRunner

P.S :- For better automation use robotium and spoon with junkins you can automate everything, you push a commit on git and you will get test results in your mail inbox it's that cool.

Edit

Running tests using spoon

Add these commands to build steps

./gradlew assembleDebugAndroidTest

./gradlew assembleDebug

specify debug-build.apk path and test-unaligned.apk path in spoon command properly

 java -jar C:\Users\Shivam\Downloads\spoon-runner-1.1.1-jar-with-dependencies.jar --apk C:\Users\Shivam\Downloads\SpoonAndRobotiumTest\app\build\outputs\
apk\app-debug.apk  --testapk C:\Users\Shivam\Downloads\SpoonAndRobotiumTest\
app\build\outputs\apk\app-debug androidTest-unaligned.apk --sdk E:\sdk

Upvotes: -1

webo80
webo80

Reputation: 3393

At first, you must install the Gradle Plugin on your Jenkins-CI installation. You can search it at http://yourhost/jenkins/pluginManager/

To continue integrating it, you can take a look at this presentation, specially on the lastest slides

Upvotes: -2

Related Questions