Ok, so here's my setting (Android Studio 1.0.2, Gradle plugin 1.0.0). 

I have a library module on which I try to have Unit Tests. Because I need 
those tests to be fast, I started using Robolectric, which was quite easy 
to add to my project. Here's what my build.gradle looks like : 


apply plugin: 'com.android.library'
apply plugin: 'robolectric'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 21
        versionCode 1
        versionName "0.10.16"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    // Build Types configuration
    buildTypes {
        debug {
            minifyEnabled false
            debuggable true
            testCoverageEnabled = true
        }

        release {
            minifyEnabled true
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.cfg'
        }
    }
}

dependencies {
    // TEST LIBRARIES
    androidTestCompile('junit:junit:4.11') 
    androidTestCompile('org.robolectric:robolectric:2.+') {
        exclude module: 'classworlds'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-plugin-registry'
        exclude module: 'maven-profile'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'nekohtml'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-http-shared'
        exclude module: 'wagon-provider-api'
        exclude group: 'com.android.support', module: 'support-v4'
        exclude group: 'commons-logging'
        exclude group: 'org.apache.httpcomponents'
    }

    // MOCKING
    androidTestCompile('org.mockito:mockito-core:1.10.19')

    // ASSERTS
    androidTestCompile('org.assertj:assertj-core:1.7.0') 
    androidTestCompile('com.squareup.assertj:assertj-android:1.0.0')

    // have to add the support library for robolectric
    androidTestCompile 'com.android.support:support-v4:21.0.3'
}




Problem is that I have a couple of classes using the NDK, so I must test 
them on a  device or emulator. So I added a couple of things to be able to 
run Instrumented tests : 


android {

... 
    defaultConfig {
...

        testApplicationId "com.example.test"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }

    ...
    
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'LICENSE.txt'
        exclude 'LICENSE'
        exclude 'NOTICE'
        exclude 'asm-license.txt'
    }
}

dependencies {

    ...
    
    // needed dependencies to use Mockito on a device
    androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'

}



Now the main issue I face is the dexMaker inclusions. They are necessary to 
be able to use mockito on a device, but they break all my tests when 
running Robolectric. 

What is the main cause is that both test system rely on the "androidTest" 
flavor name (both sources are under the "androidTest/java" folder, and both 
use the androidTestCompile keywords. Is there  any way to create two test 
flavors (lets say robolectricTest and InstrumentTest) so that each could 
have their own dependencies ? 

-- 
You received this message because you are subscribed to the Google Groups 
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to