2014-05-19 2 views
5

Это мой Gradle файл:Android-студио с Robolectric: мой тестовый класс не найден

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

android { 
// Check on it to know witch Android API level is necessary: 
// http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels 
compileSdkVersion 19 
buildToolsVersion '19.0.1' 

defaultConfig { 
    minSdkVersion 14 
    targetSdkVersion 19 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" 
} 
buildTypes { 
    release { 
     runProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
    } 
} 
sourceSets { 
    androidTest { 
     setRoot('src/test') 
    } 
} 
// Patch: http://stackoverflow.com/questions/20673888/duplicate-files-copied-android-studio-0-4-0 
packagingOptions { 
    exclude 'META-INF/DEPENDENCIES' 
    exclude 'META-INF/NOTICE' 
    exclude 'META-INF/LICENSE' 
    exclude 'META-INF/LICENSE.txt' 
    exclude 'META-INF/license.txt' 
    exclude 'META-INF/NOTICE.txt' 
    exclude 'META-INF/notice.txt' 
    exclude 'META-INF/ASL2.0' 
} 
} 

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

dependencies { 

// Android SDK Extra librairies 
compile 'com.android.support:support-v4:19.0.+' 
compile 'com.android.support:appcompat-v7:19.0.+' 
compile fileTree(dir: 'libs', include: ['*.jar']) 

// Android testing 
// http://robolectric.org/ 
androidTestCompile 'junit:junit:4.+' 
androidTestCompile 'org.robolectric:robolectric:2.+' 
androidTestCompile 'com.squareup:fest-android:1.0.+' 
// had to deploy to sonatype to get AAR to work 
//compile 'com.novoda:actionbarsherlock:4.3.2-SNAPSHOT' 

}

Это мой корень Gradle файл:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
repositories { 
    maven { url "http://dl.bintray.com/populov/maven" } 
    mavenCentral() 
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" } 
} 
dependencies { 
    classpath 'com.android.tools.build:gradle:0.9.+' 
    //classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2+' 
    //classpath 'com.novoda.gradle:robolectric-plugin:0.0.1-SNAPSHOT' 
    classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.10.+' 
} 
} 

allprojects { 
repositories { 
    maven { url "http://dl.bintray.com/populov/maven" } 
    mavenCentral() 
    maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } 
} 
} 

Я просто написать простой класс, чтобы проверить, чтобы проверить мой тест инфраструктуры, но у меня есть эта ошибка:

Class not found: "com.example.myapp.activity.BaseActivityTest"

Мой класс тест:

package com.example.myapp.activity; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.robolectric.RobolectricTestRunner; 

import static org.junit.Assert.*; 

@RunWith(RobolectricTestRunner.class) 
public class BaseActivityTest { 
@Test 
public void testTrueIsTrue() throws Exception { 
    assertEquals(true, true); 
} 
} 

Моя папка achitecture является:

  • MyApp

    • ЦСИ

      • главный

        • ява
          • com.example.myapp ...
      • тест

        • ява
          • com.example.myapp ...

Я не понимаю, почему появляется эта ошибка.

Спасибо, ребята!

+0

Эй Энтони, У меня есть рабочая настройка для Android Studio 0.4.6, но знаю, что более поздняя версия студии Android вызвала проблемы - я спросил [этот вопрос] (http://stackoverflow.com/q/23116409/1348379) ответ оглушительной тишины! Какую версию AS вы используете? – OceanLife

+0

Эй, OceanLife! Это последняя версия 0.5.5. Благодаря! – anthony

ответ

0

Одобренные ванты, я нашел решение:

Это мой Gradle файл:

apply plugin: 'android' 
apply plugin: 'robolectric' 

android { 
// Check on it to know witch Android API level is necessary: 
// http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels 
compileSdkVersion 19 
buildToolsVersion '19.0.1' 

defaultConfig { 
    minSdkVersion 14 
    targetSdkVersion 19 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" 
} 
buildTypes { 
    release { 
     runProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
    } 
} 
sourceSets { 
    androidTest { 
     setRoot('src/test') 
    } 
} 
} 

// prevent the "superClassName is empty" error for classes not annotated as tests 
tasks.withType(Test) { 
scanForTestClasses = false 
include "**/*Test.class" // whatever Ant pattern matches your test class files 
} 

dependencies { 

// Android SDK Extra librairies 
compile 'com.android.support:support-v4:19.0.+' 
compile 'com.android.support:appcompat-v7:19.0.+' 
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar']) 

// Android testing 
//androidTestCompile configurations.androidTestCompile.dependencies 
// http://robolectric.org/ 
androidTestCompile 'org.robolectric:robolectric:2.+' 
androidTestCompile 'junit:junit:4.+' 
} 

И я изменил мой VM аргумент (Configuration издание), как этот пост: http://blog.futurice.com/android_unit_testing_in_ides_and_ci_environments

+0

Я никогда не буду смешивать андроид + robolectric в том же модуле. Это исключает эспрессо (все еще работает бит очень медленно), в AS я добавляю к задаче по умолчанию junit дополнительный внешний шаг сборки, чтобы AS генерировал файлы классов. Подробные описания можно найти здесь https: // github.ком/nenick/Android-Gradle-шаблон/вики/тесты-в-Android-Studio --- IntellJ – nenick

Смежные вопросы