Search code examples
androidandroid-espressoui-testing

Espresso methods unresolved


I'm having some major difficulties getting Espresso to work with Android Studio.

I have the following code for a test:

import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;

import com.nullpointexecutioners.buzzfilms.activities.WelcomeActivity;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class ApplicationTest {

    @Rule
    public ActivityTestRule<WelcomeActivity> mActivityRule = new ActivityTestRule<>(WelcomeActivity.class);

    @Test
    public void testTitle() {
        onView(withText("Buzz Films")).check(matches(isDisplayed()));
    }
}

Unfortunately, the onView, withText, matches, and isDisplayed() all give me errors saying the methods can't be resolved. I can get it to work if I do a bunch of static import statements--but I didn't want to resort to that. (i.e. I'd have to write Espresso.onView(ViewMatchers.withText(...)...)

I'd like to think I have my build.gradle file correct--based on what information I could find regarding my issue.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.nullpointexecutioners.buzzfilms"
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 7
        versionName "2.0" //bump this up per milestone

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            zipAlignEnabled true
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            zipAlignEnabled false
        }
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE-FIREBASE.txt'
        exclude 'META-INF/NOTICE'
    }
    testOptions {
        unitTests.returnDefaultValues = true
        unitTests.all {
            // All the usual Gradle options.
            jvmArgs '-XX:MaxPermSize=256m'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support:support-annotations:23.2.1'
    androidTestCompile 'com.android.support.test:rules:0.5'
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2.2') {
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') {
        exclude group: 'com.android.support', module: 'support-annotations'
        exclude group: 'com.android.support', module: 'appcompat'
        exclude group: 'com.android.support', module: 'support-v4'
        exclude module: 'recyclerview-v7'
    }
    androidTestCompile('com.android.support.test.espresso:espresso-web:2.2.2') {
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestCompile ('com.android.support.test:runner:0.5') {
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'


    compile('com.github.afollestad.material-dialogs:core:0.8.5.5@aar') {
        transitive = true
    }
    compile('com.mikepenz:materialdrawer:4.6.4@aar') {
        transitive = true
    }
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:support-v4:23.2.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.mikepenz:iconics-core:2.5.5@aar'
    compile 'com.mikepenz:google-material-typeface:2.2.0.1.original@aar'
    compile 'com.firebase:firebase-client-android:2.3.1'
    compile 'com.android.support:cardview-v7:23.2.1'
    compile 'com.android.support:recyclerview-v7:23.2.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.android.support:palette-v7:23.2.1'
    compile 'com.github.florent37:picassopalette:1.0.2@aar'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'com.github.channguyen:rsv:1.0.1'
}

Solution

  • You will need the static imports.

    The official Google sample code uses static imports. Static imports are standard practice for fluent APIs.

    Sample Espresso Test