2016-11-02 4 views
0

для конкретного проекта нам нужно запустить тестовые комплекты Espresso и Robolectric, но кажется, что их зависимости, похоже, очень сильно конфликтуют.Android JUnit запускает как тестовые комплекты Espresso, так и Robolectric

Поэтому мой вопрос: возможно ли, чтобы они были оба, или мы должны решить другое решение?

Наш Gradle файл:

apply plugin: 'com.android.application' 
apply plugin: 'jacoco' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.2" 

    defaultConfig { 
     targetSdkVersion 24 
     minSdkVersion 15 
     versionCode 1 
     versionName "1.0" 

     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 

    buildTypes { 
     debug { 
      testCoverageEnabled true 
     } 
    }  
} 

dependencies { 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 

    }) 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.android.support:design:24.2.1' 
    compile 'com.android.support:support-v4:24.2.1' 
    compile 'com.android.support:recyclerview-v7:24.2.1' 
    androidTestCompile 'junit:junit:4.12' 

    androidTestCompile "org.robolectric:robolectric:3.1.4" 

    compile ('com.github.nkzawa:socket.io-client:0.3.0') 
} 

Спасибо заранее.

+0

Вы посмотрите на этот ответ: http://stackoverflow.com/questions/29021331/confused-about-testcompile-and-androidtestcompile-in-android-gradle? Кроме того, согласно документации: http://robolectric.org/getting-started/, вам необходимо использовать testCompile для Robolectric вместо androidTestCompile. –

+0

Я попробовал это с помощью 'testCompile', но это приводит к тому же. Он просто не компилируется. – qantik

+0

Можете ли вы также попробовать использовать testCompile для JUnit и robolectric? Я попытался создать файл build.gradle на моей машине с помощью buildToolsVersion «24.0.3» и скомпилировал его. –

ответ

1

Вы можете использовать их оба, но их необходимо разделить на отдельные тестовые пакеты.

Ваши тесты на робот должны принадлежать упаковке test, тогда как эспрессо-тесты должны находиться в androidTest. Ваши зависимости также будут префиксами в соответствии с пакетами (то есть зависимости от robolectric будут testCompile, тогда как эспрессо-тесты будут androidTestCompile).

Этот раскол требуется по характеру как тестов на робок и эспрессо. Robolectric, являющийся платформой единичного тестирования, полностью (в какой-то степени) андроид sdk, который позволяет выполнять тесты в JVM, в то время как эспрессо требует «реального» андроида для выполнения тестов.

This guide от google охватывает тест, установленный более подробно.

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

  • Нет связанных вопросов^_^