Проблеми с Roboelectric с новите версии на gradle и android sdk

До скоро можех да използвам roboelectric с gradle. Постоянно получавам грешка 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()
    }
}

По-долу е моето приложение 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.

https://discuss.gradle.org/t/why-cant-my-simpest-one-line-build-gradle-compile-tests-with-junit-jar/1868

Може ли някой да ме насочи в правилната посока за това? Защо не може да открие org.junit от build.gradle?


person KVISH    schedule 26.05.2015    source източник


Отговори (2)


Трябва да зададете тестовия артефакт на варианта на компилация на Unit Tests.

въведете описание на изображението тук

Вече нямах нужда от "основния" проект, така че го изтрих. Моят 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'
    }
}
person KVISH    schedule 26.05.2015

миналия ден и аз се сблъсках с проблема. Най-накрая получих решението.

Грешката се дължи на това, че сте създали папката java за вашия тестов клас като папка java, която се показва в син цвят в Android Studio. Всъщност ви трябва в зелен цвят

За тестване просто трябва да създадете папка с java име, всичко останало ще направи самото android studio.

за премахване на зависимост от java папка, която можете да премахнете

  sourceSets {
    androidTest.setRoot('src/test')
}

код от build.gradle

тогава всичко ще работи добре

person Arun Antoney    schedule 28.05.2015
comment
Това няма смисъл. Горната конфигурация е направо от документацията. Така трябва да се пише. - person KVISH; 28.05.2015
comment
Вече работех. Моят отговор по-горе е приетият отговор според документацията за Roboelectric. По принцип трябва да настроите рамката за тестване на единици, така че да включва JUnit. - person KVISH; 29.05.2015
comment
Също така, че sourceSets е много важен ред. Той му казва как да организира кода за модулни тестове. Изненадан съм, че вашият градски проект е конфигуриран правилно и всички модулни тестове работят... Нещо друго изглежда проблемно тук. - person KVISH; 29.05.2015
comment
мога ли да знам какъв е цветът на вашия тестов java файл - person Arun Antoney; 29.05.2015
comment
Файлът и пакетът по-долу са зелени. - person KVISH; 29.05.2015
comment
добре, тогава няма проблем, също така не е нужно да казваме на android studio какъв е нашият път към папката на sourceset, студиото ще го направи по свой начин, използвайки някакъв алгоритъм - person Arun Antoney; 29.05.2015