我正在尝试使用gradle android构建系统运行robolectric测试。我已经按照instructions given here尝试使其工作,但是在使用 gradle robolectric 进行测试时,我严重卡在以下错误中-
/Users/Sreekanth/Documents/artoo/Code/Android/HelloWorld/src/test/java/com/example/helloworld/MyTest.java:8: package org.robolectric does not exist
import org.robolectric.RobolectricTestRunner;
我的项目具有以下结构-
.
├── AndroidManifest.xml
├── assets
├── bin
├── build.gradle
├── gen
├── libs
├── res
└── src
├── main
│ └── java
│ └── com
│ └── example
│ └── helloworld
│ ├── MainActivity.java
└── test
└── java
└── com
└── example
└── helloworld
└── MyTest.java
这是我的 build.gradle :
buildscript {
repositories {
mavenCentral()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
classpath 'com.novoda.gradle:robolectric-plugin:0.0.1-SNAPSHOT'
}
}
apply plugin: 'android'
apply plugin: 'robolectric'
apply plugin: 'maven'
dependencies {
compile 'com.android.support:support-v4:13.0.+'
robolectricCompile 'org.robolectric:robolectric:2.0'
robolectricCompile group: 'junit', name: 'junit', version: '4.11'
}
repositories {
mavenLocal()
mavenCentral()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
defaultConfig {
minSdkVersion 7
targetSdkVersion 18
}
}
我的MyTest.java文件:
package com.example.helloworld;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class MyTest {
@Test
public void shouldHaveHappySmiles() throws Exception {
String appName = new MainActivity().getResources().getString(R.string.app_name);
assertThat(appName, equalTo("My Application"));
}
}
如果我使用的是新的gradle项目结构,则可以成功运行robolectric测试,但如果使用的是上述的旧的eclipse项目结构,则不能成功。
最佳答案
您需要使用新的结构,期限。 robolectric插件对该路径进行了硬编码。您可能可以从构建脚本中设置sourceSet,但它会很hacky,而不是“官方的”。
关于android - Robolectric with Gradle:软件包org.robolectric不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122502/