フォルダー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