Android '/gradlew-Dtest.single=简单测试测试';运行我所有的测试
我的项目是在Android Studio上创建的普通Android项目 我在谷歌上搜索了很多来运行一个测试(SimpleTest中的测试,本例中是一个测试),每个人都说我应该这样做Android '/gradlew-Dtest.single=简单测试测试';运行我所有的测试,android,testing,gradle,android-studio,robolectric,Android,Testing,Gradle,Android Studio,Robolectric,我的项目是在Android Studio上创建的普通Android项目 我在谷歌上搜索了很多来运行一个测试(SimpleTest中的测试,本例中是一个测试),每个人都说我应该这样做 ./gradlew -Dtest.single=SimpleTest test 在我的根文件夹中 或者是在我的内部项目文件夹中 ../gradlew -Dtest.single=SimpleTest test 我尝试了很多类似的方法,但它总是运行我所有的测试。(所有类中有11个测试) 我的身材有问题吗?格雷德尔
./gradlew -Dtest.single=SimpleTest test
在我的根文件夹中
或者是在我的内部项目文件夹中
../gradlew -Dtest.single=SimpleTest test
我尝试了很多类似的方法,但它总是运行我所有的测试。(所有类中有11个测试)
我的身材有问题吗?格雷德尔还是我缺少了什么
这是我的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'
}
}
符号
-Dtest.single=SimpleTest
表示在名为“test”的任务中仅运行SimpleTest。如果测试任务名称不同,则必须更改系统属性。例如,您的测试任务名为“instrumentationTest”,属性必须为
-DinstrumentationTest.single=SimpleTest
干杯,
勒内给了我一个线索。我从微软获得了一个新的Android Studio插件,用于
Robolectric
任何人谁想要像我一样的解决方案可以解决这个问题使用这个项目
您也可以在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
运行良好 这就是我的工作原理:
/gradlew testDebug--tests*TaskCommandSpec
使用testDebug
或testRelease
而不仅仅是test
。
如果您有构建变体,则使用例如testProRelease
文档:运行
admob
包中的每个类:
./gradlew clean test --tests "admob.*"
运行单个测试类:
./gradlew clean test --tests SimpleTest
在SimpleTest
类中运行单个测试方法:
./gradlew clean test --tests SimpleTest.simpleMethod
-Dtest.single
是使用java
插件运行单个测试类或方法的正确方法。android单元测试插件的情况可能会有所不同。@PeterNiederwieser感谢您的评论。这是否意味着我应该为android单元测试找到一个特定的解决方案?@PeterNiederwieser你给了我一个线索:)我发现android单元测试
插件仍然不支持-Dtest。通过在Github
上向该插件的开发者询问这个选项,就可以找到一个选项。他为此制作了一个新补丁,并将新版本上传到Maven,所以现在我终于可以运行一个测试类:)如果你回答我关于这个的问题,我会接受:)这对我有效:谢谢你的评论:)我是gradle或Android Studio的新手,所以我只使用默认测试。instrumentTest不是我的自定义任务。实际上,如果我像/gradlew instrumentTest
那样运行,它会说没有这样的任务。这就是为什么我只是为SimpleTest运行测试。我测试了运行。/gradlew-dinstrucumentTest.single=SimpleTest测试
,它运行我所有的测试。所以您的测试任务被简单地命名为“测试”?您能否检查将-Dtest.single=…
部分放在任务之后是否会产生影响:。/gradlew test-Dtest.single=SimpleTest
?不应该,但你永远不会知道是的,我尝试了。/gradlew test-Dtest.single=SimpleTest
和。/gradlew test-dinstructiontest=SimpleTest
,但仍然运行所有测试。