直到最近,我曾经能够使用带有gradle的roboelectric。我一直收到错误Error:(6, 17) error: package org.junit does not exist
。我不太确定并且已经深入挖掘了这一点。
以下是我的项目build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
mavenCentral()
jcenter()
}
}
以下是我的app build.gradle:
repositories {
mavenCentral()
jcenter()
}
apply plugin: 'com.android.application'
android {
...
sourceSets {
androidTest.setRoot('src/test')
}
}
dependencies {
...
// Testing
compile project(':core')
testCompile 'org.robolectric:robolectric:2.4'
testCompile 'junit:junit:4.+'
testCompile 'org.easytesting:fest:1.0.16'
testCompile 'com.squareup:fest-android:1.0.8'
}
我的核心项目build.gradle:
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
testCompile 'org.robolectric:robolectric:2.4'
}
我已经阅读了下面的内容,这里没有任何内容对我有用:
https://www.bignerdranch.com/blog/all-in-together-android-studio-gradle-and-robolectric/ - 将要使用的android studio插件在较新的Android studio版本上崩溃。
https://www.bignerdranch.com/blog/triumph-android-studio-1-2-sneaks-in-full-testing-support/ - 这根本无法解决问题。它无法找到org.junit。
有人能指出我正确的方向吗?为什么它无法从org.junit
build.gradle
答案 0 :(得分:1)
您必须将构建变体测试工件设置为Unit Tests
。
我不再需要“核心”项目,所以我删除了它。我的app的build.gradle看起来像这样:
repositories {
jcenter()
}
apply plugin: 'com.android.application'
android {
...
sourceSets {
androidTest.setRoot('src/test')
}
}
dependencies {
...
// Testing
testCompile 'junit:junit:4.12'
testCompile 'org.easytesting:fest:1.0.16'
testCompile 'com.squareup:fest-android:1.0.8'
testCompile('org.robolectric:robolectric:3.0-rc2') {
exclude group: 'commons-logging', module: 'commons-logging'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
}
答案 1 :(得分:0)
最后一天我也面临着这个问题。我得到了解决方案。
该错误是由于您为测试类创建了java文件夹作为java文件夹,在android studio中出现蓝色。实际上您需要绿色 < / p>
对于测试,你只需要创建带有java名称的文件夹,其他一切都将由android studio本身完成。
用于删除java文件夹依赖项,您可以删除
sourceSets {
androidTest.setRoot('src/test')
}
来自build.gradle的代码
然后一切都会正常工作