How to use Mockito/Hamcrest in unit tests in Android Studio

做~自己de王妃 提交于 2019-12-04 07:42:22
GaRRaPeTa

I got it working by using the "androidTestCompile" options under "dependencies", as explained here.

What I have done is:

  • created a folder called libs-tests with the jars that should only be used for testing.
  • added that folder as a dependency for tests with "androidTestCompile"

Now, the gradle build file stands as:

apply plugin: 'android'

dependencies {
    compile project(':android-sdk')

    // The libs folder is included in the apk of the real app
    compile fileTree(dir: 'libs', include: '*.jar')

    // The tests-libs folder is included only for tests
    androidTestCompile fileTree(dir: 'libs-tests', include: '*.jar')
}


android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }


    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        androidTest.setRoot('tests')

        // Note - to run the tests from command line:
        // $ gradle clean connectedCheck build
        // (requires gradle 1.10)

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

I had that exact problem too.

  1. I used androidTestCompile instead of testCompile
  2. I also had to have the classpath 'com.android.tools.build:gradle:1.1.0' [or higher]
  3. then i did a buildDependecies before doing a sync.

thats all i did for this error to go away.

Since the android gradle plugin version 1.1.0, there is support for unit testing so you can use testCompile in the gradle files. Turn it on with settings > gradle > experimental and update the gradle plugin version:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'
    }
}

I used androidTestCompile instead of testCompile

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!