2

Здравствуйте, я пытаюсь получить ActionBar Деятельность UnitTests происходит, и я использую Robolectirc-RC2, но когда я пытаюсь синхронизировать андроид студии я получаю следующее сообщение об ошибке/предупреждение. Предупреждение: конфликт с зависимостью org.hamcrest:hamcrest-core. Решенные версии для приложения и тестового приложения отличаются. Любая идея, как ее решить?Robolectric 3,0-код2 Hamcrest-ядерный конфликт

repositories { 
maven { url "https://oss.sonatype.org/content/repositories/snapshots" } 
mavenLocal() 
mavenCentral() 

}

dependencies { 
// Unit testing dependencies 
unitTestCompile('junit:junit:4.12') { // Prevent duplication conflicts 
    exclude module: 'hamcrest-core' 
    exclude module: 'hamcrest-library' 
    exclude module: 'hamcrest-integration' 
} 
unitTestCompile 'org.hamcrest:hamcrest-core:1.1' 
unitTestCompile 'org.hamcrest:hamcrest-library:1.1' 
unitTestCompile 'org.hamcrest:hamcrest-integration:1.1' 
unitTestCompile 'com.squareup.assertj:assertj-android:1.0.0' 
+0

Попробуйте изменить 'unitTestCompile' на' testCompile' –

+0

Теперь я получаю следующую ошибку. Конфликт с зависимостью «com.android.support:support-annotations». Решенные версии для приложения и тестового приложения отличаются. –

+0

Кроме того, мне нужно использовать robolectric для тестирования вместо стандартного тестирования Android. –

ответ

1

Вот как мы указываем Robolectric в наших проектах:

testCompile("org.robolectric:robolectric:${robolectricVer}") { 
     exclude group: 'commons-logging', module: 'commons-logging' 
     exclude group: 'org.apache.httpcomponents', module: 'httpclient' 
    } 
+0

Я сделал изменения выше, и теперь андроид-студия не может найти junit jar-файл, и я получаю некоторые ошибки. ошибка: пакет org.robolectric.nnation не существует импорт org.robolectric.nnation.Config; –

+0

Было бы легко, если бы вы разделили весь файл build.gradle и структуру проекта. –

4

хорошо подходит, чтобы добавить следующий код.

configurations.all { 
resolutionStrategy { 
    force 'org.hamcrest:hamcrest-core:1.3' 
}} 

, а затем заменить на How can we access context of an application in Robolectric? Просто используйте для версии 1.x и 2.x:

Robolectric.application;

А для версии 3.х:

RuntimeEnvironment.application;

дополнительно заменить

Config (emulateSdk = 18, reportSdk = 18, проявляются = "SRC/тест/AndroidManifest.xml")

с

@Config (SDK = 18)

+0

Я попытался использовать resolutionStrategy без успеха (такая же ошибка, разные библиотеки). Я смог получить его для компиляции, просто добавив компиляцию «org.hamcrest: hamcrest-core: 1.3» чуть выше, добавляя соответствующую зависимость - в данном случае Robolectric. В моем случае это было для sendgrid – Nick

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