9

私のプロジェクトは、 Android Studioで作成された通常の Android プロジェクトです。

プロジェクト構造

私は単一のテスト (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'
    }
}
4

4 に答える 4

9

表記

-Dtest.single=SimpleTest

「test」という名前のタスクで、SimpleTest のみを実行することを意味します。テスト タスク名が異なる場合は、システム プロパティを変更する必要があります。たとえば、テスト タスクの名前は 'instrumentationTest' で、プロパティは次のようにする必要があります。

-DinstrumentationTest.single=SimpleTest

乾杯、ルネ

于 2013-11-07T07:46:49.307 に答える
2

@PeterNiederwieser手がかりをくれました。https://github.com/JCANdKSolutions/android-unit-testRobolectricから新しい 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はうまくいきます。

于 2013-12-05T05:07:35.013 に答える