3

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' } 
4
  • You have to use static imports. That is standard practice. Commented Apr 2, 2016 at 1:06
  • @yogurtearl Even then it's not working. Commented Apr 2, 2016 at 2:54
  • Can you update the question to include the static imports? Commented Apr 2, 2016 at 2:57
  • Now it appears to work. Where have you read static imports are standard? I haven't found a thing about it. Every tutorial or article just has it working without many imports. Commented Apr 2, 2016 at 3:03

2 Answers 2

3

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

Sign up to request clarification or add additional context in comments.

Comments

0

For AndroidX:

import androidx.test.espresso.Espresso.onView import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.assertion.ViewAssertions.matches 

Check out the packages below to see what else is available:

https://developer.android.com/reference/androidx/test/espresso/matcher/ViewMatchers

https://developer.android.com/reference/androidx/test/espresso/assertion/ViewAssertions

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.