我的项目是在 Android Studio 上创建的普通Android项目。
我用google搜索了一个单独的测试(在SimpleTest中测试,在这种情况下测试1次),每个人都说我应该这样做
./gradlew -Dtest.single=SimpleTest test
在我的根文件夹中。
或者我在我的内部项目文件夹中
../gradlew -Dtest.single=SimpleTest test
我尝试了很多像这样的方法,但它总是运行我所有的测试。(所有类中的11个测试)
我的build.gradle上有问题,还是有遗漏的东西?
这是我的 build.gradle 文件。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
classpath 'com.github.jcandksolutions.gradle:android-unit-test:1.0.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.1.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
// I changed this for this question
packageName "com.XXX.XXXX"
}
sourceSets {
instrumentTest.setRoot('src/test')
}
}
apply plugin: 'android-unit-test'
dependencies {
repositories {
mavenCentral()
}
compile 'com.android.support:support-v4:18.0.+'
compile 'com.android.support:appcompat-v7:+'
compile 'com.google.code.gson:gson:2.2.4'
compile group:'com.squareup.picasso', name:'picasso', version:'2.1.1'
compile group:'com.squareup.okhttp', name:'okhttp', version:'1.2.1'
compile group:'com.squareup', name:'otto', version:'1.3.4'
compile group:'com.jakewharton', name:'butterknife', version:'3.0.0'
compile group:'com.github.kevinsawicki', name:'http-request', version:'5.4.1'
compile fileTree(dir: 'libs', include: '*.jar')
testCompile 'junit:junit:4.10'
testCompile 'org.robolectric:robolectric:2.2'
testCompile 'com.squareup:fest-android:1.0.+'
instrumentTestCompile 'junit:junit:4.10'
instrumentTestCompile 'org.robolectric:robolectric:2.2'
instrumentTestCompile 'com.squareup:fest-android:1.0.+'
}
tasks.withType(Compile) {
options.encoding = "UTF-8"
}
tasks.withType(Test) {
testLogging {
events 'started', 'passed'
}
}
答案 0 :(得分:8)
符号
-Dtest.single=SimpleTest
表示在名为'test'的任务中只运行SimpleTest。如果测试任务名称不同,则必须更改系统属性。例如。您的测试任务名为'instrumentationTest'属性必须为
-DinstrumentationTest.single=SimpleTest
欢呼声, 勒
答案 1 :(得分:3)
这对我有用:
root@b7349202b6d3:/# ls -la /conf/
total 8
drwxr-xr-x 3 root root 4096 May 18 16:43 .
drwxr-xr-x 74 root root 4096 May 18 16:55 ..
drwxr-sr-x 2 root staff 40 May 18 16:43 application.properties
使用./gradlew testDebug --tests *TaskCommandSpec
或testDebug
代替testRelease
。
如果您有构建变体,请使用例如test
docs:https://docs.gradle.org/current/userguide/userguide_single.html
答案 2 :(得分:2)
@PeterNiederwieser
给了我一个线索。我从https://github.com/JCAndKSolutions/android-unit-test
Robolectric
的新Android Studio插件
任何想要像我这样的解决方案的人都可以使用这个项目解决问题。
您也可以在build.gradle
中使用
buildscript {
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
classpath 'com.github.jcandksolutions.gradle:android-unit-test:1.0.1'
}
}
现在../gradlew clean check -Dtest.single=SomeTest
效果很好。
答案 3 :(得分:0)
运行 admob
包中的每个类:
./gradlew clean test --tests "admob.*"
运行单个测试类:
./gradlew clean test --tests SimpleTest
在 SimpleTest
类中运行单个测试方法:
./gradlew clean test --tests SimpleTest.simpleMethod