Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TDD:Robolectric&;格拉德尔_Android_Tdd_Android Gradle Plugin_Robolectric - Fatal编程技术网

Android TDD:Robolectric&;格拉德尔

Android TDD:Robolectric&;格拉德尔,android,tdd,android-gradle-plugin,robolectric,Android,Tdd,Android Gradle Plugin,Robolectric,就在我用安卓maven插件实现了一个有效的开发和构建环境的时候,新来的孩子Gradle开始进军安卓领域。由于Groovy不受欢迎,android gradle插件几乎和操作系统本身一样零碎,我遇到了一些问题。特别是围绕建设图书馆项目,与风味和我们的伙伴Robolectric 短版 遇到格拉德尔错误时,我不知下一步该怎么办 Cannot add a SourceSet with name 'testDebug' as a SourceSet with that name already exist

就在我用
安卓maven插件
实现了一个有效的开发和构建环境的时候,新来的孩子Gradle开始进军安卓领域。由于Groovy不受欢迎,android gradle插件几乎和操作系统本身一样零碎,我遇到了一些问题。特别是围绕建设图书馆项目,与风味和我们的伙伴Robolectric

短版 遇到格拉德尔错误时,我不知下一步该怎么办

Cannot add a SourceSet with name 'testDebug' as a SourceSet with that name already exists.
该错误源于库中的
ProductFlavors
(即移动到0.9.2 android构建系统)和团队最近在Robolectric从Jake的创建中分出的
gradle android测试插件
(参见)。我已经完成了所有的调查,几乎筋疲力尽,我可以报告说,在我的库gradle文件中存在的
'android-test'
插件让事情变得不对劲

较长版本 这是一个简略的应用程序
build.gradle
文件,保留了相关信息

apply plugin: 'android-library'
apply plugin: 'android-test'
...
android {
    compileSdkVersion 19
    buildToolsVersion '19.0.3'

    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 19
        versionCode buildNumber().toInteger()
        versionName "1.0.0"
    }

    productFlavors {
        estimote {
            dependencies {
                compile '<flavour specific dependency>'
            }
        }

        radius {
            dependencies {
                compile '<flavour specific dependency>'
            }
        }
    }
}
...
dependencies {
    compile 'com.squareup.dagger:dagger:1.2.1'
    compile 'com.squareup.dagger:dagger-compiler:1.2.1'
    compile 'com.google.code.gson:gson:2.2.+'

    // Testing dependencies
    androidTestCompile 'org.mockito:mockito-core:1.9.5'
    androidTestCompile 'com.squareup:fest-android:1.0.7'
    androidTestCompile 'org.hamcrest:hamcrest-all:1.3'
    androidTestCompile 'org.robolectric:robolectric:2.2'
    androidTestCompile 'junit:junit:4.11'
}
如果你已经写了这么多了,请拍拍自己的背。现在,你们当中目光锐利的人可能已经注意到了
sourceset
重定向上的省略,其命令类似于

sourceSets {
        androidTest {
            setRoot('src/test')
        }
    }
在纠正初始错误后,需要恢复这些线路,以告知gradle项目的结构。该项目的结构是标准的,看起来像

- project_name
  + gradle
  - lib
     + flavour1
     + flavour2
     - main
        + java
     - test
        + java
    build.gradle
 build.gradle
 gradle.properties
 settings.gradle
正在使用什么 该应用程序使用的是
gradle-1.10-all
、0.9.2
android gradle
插件和0.9.+
gradle android测试插件

问题
该项目应如何设置/更改,以便于在具有香味的库上进行机器人分子测试?这可能吗?

我遇到了同样的问题,深入研究了代码,修复了它,并提交了一个刚刚合并的请求。有关详细信息,请参见我在PR上的解释,但归根结底是插件代码中的一个错误优化:


从今天起,您需要克隆repo并将插件构建并安装到本地maven repo。下次他们发布maven central(可能是0.13.1版?)时,您可以直接从那里使用插件。

我遇到了同样的问题,因此如果您碰巧解决了这个问题,我希望您能更新解决方案。谢谢。没有解决这个特定问题的方法@Kevin,但是Android Studio和Robolectric的最新测试版似乎又恢复正常了。如果可以,请更新。。。
- project_name
  + gradle
  - lib
     + flavour1
     + flavour2
     - main
        + java
     - test
        + java
    build.gradle
 build.gradle
 gradle.properties
 settings.gradle