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

Ima*_*nol 16
@Aldo Borrero,最后似乎有人找到了使用Robolectric和Gradle在"Android Studio"下测试android项目的方法.请看看这个答案Robolectric with Gradle
更新:来自广场的人已经发布了一个插件,让Robolectric与Gradle和Android Studio一起开箱即用,这个功能将在v2中与Robolectric集成,同时你可以在这里获取插件:Gradle Android测试插件
我尝试了不同的appraoaches结合android studio&robolectric和espresso.我结束了这个示例项目设置https://github.com/nenick/android-gradle-template
这里有一些不同方法的解释:
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测试编译时间和执行时间变慢.
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'
}
Run Code Online (Sandbox Code Playgroud)
一个例子由https://github.com/stephanenicolas/Quality-Tools-for-Android显示,但它已经过时并且也有一些缺点.它将重新编译并使android studio表现得很奇怪.它将应用程序模块源标记为espresso测试模块的(根源).这有效但不直观.
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"
}
}
Run Code Online (Sandbox Code Playgroud)
存在一个插件https://github.com/novoda/gradle-android-test-plugin,它使我们能够将robolectric测试放入sperate包中.这个项目设置对我很有用:
- MyProject
|- app (with espresso tests)
|- - build.gradle (app)
|- robolectric (unit tests)
|- - build.gradle (robo)
Run Code Online (Sandbox Code Playgroud)
dependencies {
androidTestCompile 'com.jakewharton.espresso:espresso:1.1-r2'
}
android {
defaultConfig {
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
}
}
Run Code Online (Sandbox Code Playgroud)
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')
}
Run Code Online (Sandbox Code Playgroud)
尝试设置此项目设置时会有一些陷阱,所以只需从一个工作示例开始:https: //github.com/nenick/android-gradle-template
这不太可能开箱即用,因为src/test没有自动使用.您需要自动创建一个测试任务,编译此源集,设置正确的依赖项并运行它.
我们打算在将来支持这一点,但现在您需要手动执行此操作.
| 归档时间: |
|
| 查看次数: |
18293 次 |
| 最近记录: |