12

フォルダーtestsの下に、その中にandroidプロジェクトとandroid testプロジェクトがあります。これらのプロジェクトの構造はEclipseのようです

+-ソース
| -解像度
| - ライブラリ
| - テスト
|.....

グラドルを使用しています。私が望むのは、アプリをビルドし、単体テストを実行して、それらのレポートを取得することだけです。しかし、私はそれを正しく行う方法を理解していません。ルートフォルダーにbuild.gradleファイルを作成しました

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android'

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"
    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 18
        testPackageName "ua.cooperok.stringcalc.tests"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
        unitTest {
            java.srcDir file('tests/src')
            resources.srcDir file('tests/res')
        }
    }

    configurations {
        unitTestCompile.extendsFrom runtime
        unitTestRuntime.extendsFrom unitTestCompile
    }

    dependencies {
        unitTestCompile files("$project.buildDir/classes/release")
    }

    task unitTest(type:Test){
        description = "Run unit tests..."
        testClassesDir = android.sourceSets.unitTest.output.classesDir
        classpath = android.sourceSets.unitTest.runtimeClasspath
    }

    build.dependsOn unitTest

}

しかし、gradleビルドを実行すると、ソースセットユニットテストでプロパティ '出力'が見つかりませんでしたというエラーが発生しました。

また、私が理解しているように、レポートを取得するには、プラグイン「android-reporting」を適用する必要がありますが、これを行う
と、その名前で既に登録されている拡張機能があるため、「android」という名前の拡張機能を追加できませんというエラーが発生しました。

このようにする必要がありますか、それともテスト アプリケーション プロジェクトで新しい gradle.build ファイルを作成する必要がありますか?

アップデート

出力でエラーを修正し、gradle ビルドを成功させましたが、何が起こっているのかわかりません。意図的にテストに失敗しましたが、gradle ビルドはまだ成功しています。
私がやったこと:
1. タスク unitTest を Android セクションからルートに移動した後、テスト プロジェクトのコンパイルが開始されましたが、「package android.test not found」
というエラーが発生しました 2. そのエラーを修正するために追加しましたAndroidソースへのクラスパスパスなので、その後gradleビルドは成功しましたが、テストが失敗しても常に成功する理由が本当にわかりません

それでも、テストからレポートを取得する方法がわかりません

これは私の新しいbuild.gradleファイルです

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6+'
    }
}

apply plugin: 'android'

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"
    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 18
        testPackageName "ua.cooperok.stringcalc.tests"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }
    sourceSets {
        main {
            manifest.srcFile file('AndroidManifest.xml')
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
    }
}

sourceSets {
    unitTest {
            java.srcDirs = ['tests/src']
            resources.srcDirs = ['tests/src']
    }
}

configurations {
    unitTestCompile.extendsFrom runtime
    unitTestRuntime.extendsFrom unitTestCompile
}

dependencies {
    unitTestCompile files("$project.buildDir/classes/release")
    unitTestCompile 'junit:junit:4.11'
    compile fileTree(dir: 'libs', include: '*.jar')
}

task unitTest(type:Test, dependsOn: assemble) {
    description = "run unit tests"
    testClassesDir = sourceSets.unitTest.output.classesDir
    classpath = files("$System.env.ANDROID_HOME/sources/android-18")
    //actualy I didn't  get any report
    getReports().getJunitXml().setOutputPerTestCase(true)
}

build.dependsOn unitTest
4

1 に答える 1