我正在尝试通过仪器测试和通过 Robolectric 的单元测试来运行 Espresso(使用Double Espresso )。到目前为止,我所拥有的主要是基于deckard-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'
}
我的目录结构如下,其中com.example.app.espresso
需要运行 asconnectedAndroidTest
和com.example.app.data
as test
:
源代码 |- 调试 |- 主要 |- 发布 |- 测试 |- 爪哇 |- com |- 例子 |- 应用 |- 浓缩咖啡 |- HomeActivityTest.java |- 数据 |- 数据测试.java |- 资源 |- 数据输入.json
因此,当我运行时gradle clean test
,我收到错误,无法识别HomeActivityTest.java
.
运行时gradle clean connectedAndroidTest
,出现错误,无法识别DataTest.java
( FailedToCreateTests.testSuiteConstructionFailed
) 中的 JUnit4 注释。
如果我取出任何一部分(依赖项和来源),另一部分可以独立工作,但不能将所有内容都包含在一起。
注意:我尝试在本地导入 Espresso jar(没有 Double Espresso),deckard-gradle 这样做的方式相同,直到我support-v4
在 Espresso 测试中使用库中的任何内容(com.jakewharton.espresso:espresso-support-v4
似乎解决了这个问题,对于本地 jar 没有其他选择) ),然后它爆炸成FailedToCreateTests.testSuiteConstructionFailed
.
有没有人让这个结构工作?有没有办法从每个目标中排除源路径?
任何解决方案(全部或部分)将不胜感激。