インストルメンテーション テストと Robolectric による単体テストを介してEspresso ( Double Espressoを使用) を実行しようとしています。私がこれまでに得たものは、主にdeccard-gradleの例に基づいています。
注: Gradle 1.10
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.10.4'
classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.10.0'
}
}
apply plugin: 'android'
apply plugin: 'android-test'
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
defaultConfig {
packageName = 'com.example.app'
minSdkVersion 9
targetSdkVersion 19
versionCode 1
versionName '1.0.0'
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
buildTypes {
debug {
debuggable = true
runProguard = false
}
release {
debuggable = false
runProguard = true
}
}
sourceSets {
androidTest {
setRoot('src/test')
}
}
packagingOptions {
exclude 'LICENSE.txt'
}
}
androidTest {
include '**/*Test.class'
exclude '**/espresso/**/*.class'
maxHeapSize = "2048m"
}
repositories {
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:19.1.0'
androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3')
androidTestCompile('com.jakewharton.espresso:espresso-support-v4:1.1-r3') {
exclude group: 'com.android.support', module: 'support-v4'
}
androidTestCompile('junit:junit:4.11') {
exclude module: 'hamcrest-core'
}
androidTestCompile('org.robolectric:robolectric:2.3') {
exclude module: 'classworlds'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-plugin-registry'
exclude module: 'maven-profile'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'nekohtml'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-http-shared'
exclude module: 'wagon-provider-api'
}
androidTestCompile 'com.squareup:fest-android:1.0.8'
}
私のディレクトリ構造は次のとおりです。 asおよびas としてcom.example.app.espresso
実行する必要があります。connectedAndroidTest
com.example.app.data
test
ソース |- デバッグ |- メイン |- リリース |- テスト |- ジャワ |-コム |- 例 |- アプリ |- エスプレッソ |- HomeActivityTest.java |- データ |- DataTest.java |- リソース |- data_input.json
そのため、 を実行するgradle clean test
と、 の Espresso インポートを認識しないというエラーが表示されHomeActivityTest.java
ます。
を実行すると、 ( )gradle clean connectedAndroidTest
内の JUnit4 アノテーションを認識しないというエラーが発生します。DataTest.java
FailedToCreateTests.testSuiteConstructionFailed
どちらかの部分 (依存関係とソース) を取り除くと、もう一方は独立して正常に動作しますが、すべてが一緒に含まれているわけではありません。
注: Espresso jar をローカルにインポートしようとしました (Double Espresso ではありません)、deccard-gradle が行うのと同じ方法support-v4
で、Espresso テストでライブラリから何かを使用するまで機能します (com.jakewharton.espresso:espresso-support-v4
それを解決するように見えますが、ローカル jar の代替手段はありません)、次に爆発しFailedToCreateTests.testSuiteConstructionFailed
ます。
誰かがこの構造を機能させましたか?各ターゲットからソース パスを除外する方法はありますか?
解決策(完全または部分的)をいただければ幸いです。