当前位置:  开发笔记 > Android > 正文

Robolectric和Gradle(Android工作室)的Android项目

如何解决《Robolectric和Gradle(Android工作室)的Android项目》经验,为你挑选了3个好方法。

我正在尝试使用Robolectric在一个项目构建中使用gradle在新的ide for android:Android studio中,但我面临一个奇怪的问题,我已经正确导入了所有库并在"src"中创建了"test"文件夹"事实是,每当我运行IDE一直说测试"类未找到:??'com.example.myandroidproject.test’我在做什么错了,我需要改变一些东西在gradle.build这里是我的目录结构体:

在此输入图像描述



1> Imanol..:

@Aldo Borrero,最后似乎有人找到了使用Robolectric和Gradle在"Android Studio"下测试android项目的方法.请看看这个答案Robolectric with Gradle

更新:来自广场的人已经发布了一个插件,让Robolectric与Gradle和Android Studio一起开箱即用,这个功能将在v2中与Robolectric集成,同时你可以在这里获取插件:Gradle Android测试插件



2> nenick..:

我尝试了不同的appraoaches结合android studio&robolectric和espresso.我结束了这个示例项目设置https://github.com/nenick/android-gradle-template

这里有一些不同方法的解释:

应用模块+ espresso + robolectric

robolectric维护者支持一个示例https://github.com/robolectric/deckard-gradle.这是基于插件https://github.com/robolectric/gradle-android-test-plugin.但这有一个缺点,在https://github.com/robolectric/gradle-android-test-plugin/issues/17上报告了依赖性污染,导致esspresso测试编译时间和执行时间变慢.

build.gradle片段,它结合了所有

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.10.+'
        classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.10.+'
    }
}

apply plugin: 'android'
apply plugin: 'android-test'

android {
    defaultConfig {
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }
}

androidTest {
    include '**/*Test.class'
    exclude '**/espresso/**/*.class'
}

dependencies {
    androidTestCompile('junit:junit:4.11')
    androidTestCompile('org.robolectric:robolectric:2.3-SNAPSHOT')
    androidTestCompile 'com.jakewharton.espresso:espresso:1.1-r2'
}
单独的浓咖啡

一个例子由https://github.com/stephanenicolas/Quality-Tools-for-Android显示,但它已经过时并且也有一些缺点.它将重新编译并使android studio表现得很奇怪.它将应用程序模块源标记为espresso测试模块的(根源).这有效但不直观.

espresso模块的build.gradle片段

dependencies {
    androidTestCompile 'com.jakewharton.espresso:espresso:1.1-r2'
}

android {
    sourceSets {
        main {
            manifest.srcFile '../AndroidSample/AndroidManifest.xml'
            java.srcDirs += ['../AndroidSample/src/main/java']
            resources.srcDirs = ['../AndroidSample/res']
            res.srcDirs = ['../AndroidSample/res']
        }
    }
    defaultConfig {
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }

}
spereate robolectric

存在一个插件https://github.com/novoda/gradle-android-test-plugin,它使我们能够将robolectric测试放入sperate包中.这个项目设置对我很有用:

- MyProject 
|- app (with espresso tests)
|- - build.gradle (app)
|- robolectric (unit tests)
|- - build.gradle (robo)

build.gradle(app + espresso)片段

dependencies {
    androidTestCompile 'com.jakewharton.espresso:espresso:1.1-r2'
}            

android {
    defaultConfig {
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }
}    

build.gradle(robo)片段

buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
        classpath "com.novoda:gradle-android-test-plugin:0.9.8-SNAPSHOT"
    }
}

android {
    projectUnderTest ':AndroidSample'
}

apply plugin: 'java'
apply plugin: 'android-test'

dependencies {
    testCompile 'junit:junit:4.11'
    testCompile 'org.mockito:mockito-core:1.9.5'
    testCompile 'com.squareup:fest-android:1.0.+')
    testCompile ('org.robolectric:robolectric:2.3-SNAPSHOT')
}

尝试设置此项目设置时会有一些陷阱,所以只需从一个工作示例开始:https: //github.com/nenick/android-gradle-template



3> Xavier Ducro..:

这不太可能开箱即用,因为src/test没有自动使用.您需要自动创建一个测试任务,编译此源集,设置正确的依赖项并运行它.

我们打算在将来支持这一点,但现在您需要手动执行此操作.


@Xav:关于如何创建这样一个任务的任何例子?此外,一旦创建了任务,我们是否应该将其添加为对"检查"的依赖?谢谢
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有