在Jenkins(Gradle)上运行Android单元测试和仪器化测试

11

我在androidTest文件夹中有一些单元测试和仪表测试。

我正在尝试在我的本地Jenkins上运行这些测试。

我已成功地将我的项目配置为Jenkins,并且还为仪表测试创建了一个模拟器。

到目前为止,我看到的所有资源都只关注ant和早期版本的Gradle。当前版本中编写任务的语法稍微有些变化,我感到困惑。

这是我的build.gradle文件:

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'
}
3个回答

1
你可以像这样编写Jenkins脚本:

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' 
}

这将安装APK和测试APK到设备,并在安装时启动测试APK中的测试用例。
这里我提供了DevDebug,因为我有一个名为Dev的口味常数,构建类型为Debug。如果您没有任何其中之一,就不要使用它们。

-1
在Jenkins中创建一个任务,并(配置adb路径),将此命令作为“执行shell命令”或Windows批处理命令添加到构建步骤中。
$ adb shell am instrument -w com.xyz.abc.test/android.test.InstrumentationTestRunner

P.S.:为了更好的自动化,请使用robotium和spoon配合junkins,您可以自动化所有内容,将提交推送到git上,您将在邮件收件箱中收到测试结果,很酷吧。
编辑:
使用spoon运行测试
将这些命令添加到构建步骤中。
./gradlew assembleDebugAndroidTest

./gradlew assembleDebug

请在Spoon命令中正确指定debug-build.apk路径和test-unaligned.apk路径。
 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

看起来Gradle构建了两个apk而不是一个。对我来说,adb shell方式刚好停止工作了。 - sandrstar
使用Spoon来运行测试,只需将一个Spoon命令添加到构建步骤中即可。请检查我已经编辑了我的答案。完成。 - Shivaraj Patil
你的回答不应该涉及到你对Jenkins的个人看法。 - GDanger
1
我只是分享了对我有效的代码,希望能帮到其他人。这并不代表我的观点是关于Jenkins的。 - Shivaraj Patil

-2

如上所述,我已成功在Jenkins中配置了我的项目。这是针对Android(单元和仪器化)的。 - AndroidEnthusiast
作为提示,我过去使用过Sonar,并在build.gradle文件中指定了Sonar参数(单元测试位置等)。我认为您可以通过Jenkins做类似的事情。 - webo80
SonarRunner的操作是“gradlew assembleRelease”。也许你需要在Jenkins上添加一个任务,这样Jenkins就可以找出如何编译它。 - webo80

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接