android - Robolectric with Gradle:软件包org.robolectric不存在

标签 android unit-testing gradle robolectric

我正在尝试使用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/

相关文章:

android - 找不到哈希字符串为 'android-22' 的目标

gradle - gradle触发另一个任务的文件复制

android - 如何使用Algolia使用ArrayList <String>和Date类型的KotlinX序列化

android - 谷歌地图未在 Android 中显示

unit-testing - Haskell 程序覆盖率没有突出显示根本没有测试的模块

android - Gradle:将相同的模块作为依赖项添加到其他模块

android - 使父布局背景变暗/模糊

android - 如何将原始类型(String)的集合存储到数据库中

java - java.util.Date 的可模拟帮助器类

java - 用 Java 编写单元测试文件,无需接口(interface)包装器