Reputation: 1215
I'm having trouble importing some of the Android UI testing framework classes - I just can't figure out what is going wrong!
This is my class:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleUnitTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class);
@Test
public void listGoesOverTheFold() {
onView(withText("Hello world!")).check(matches(isDisplayed()));
}
}
But for some reason I get the errors 'cannot find symbol ActivityTestRule' and 'cannot find symbol AndroidJUnit4'. I've tried to import them but they cannot be found.
The dependencies in build.gradle are set to:
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
androidTestCompile 'com.android.support:support-annotations:23.4.0'
androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'com.android.support.test:rules:0.4'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
So I think I have all the dependencies setup - I've been trying many things but with no luck.
Anyone have any ideas?
Upvotes: 87
Views: 55649
Reputation: 31
you need to add these dependencies
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
Upvotes: 0
Reputation: 1686
If you migrated to AndroidX, use this:
androidTestImplementation 'androidx.test:rules:1.4.0'
androidTestImplementation 'androidx.test:runner:1.4.0'
Upvotes: 67
Reputation: 203
Using ActivityScenarioRule worked for me.
@Rule
public ActivityScenarioRule<MainActivity> mActivityRule = new ActivityScenarioRule(MainActivity.class);
Upvotes: 0
Reputation: 663
For writing UI tests((tests that run on Android Device/Emulator)) in Android, make sure that
The Test classes are in androidTest package rather that test package.
Make sure you make the following dependencies in build.gradle
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test:rules:1.2.0' androidTestImplementation 'androidx.test.ext:junit:1.1.1' testImplementation 'junit:junit:4.13'
For Unit Testing(tests that run on JVM) make sure
1.Test classes are in test package
2.Make sure you make the following dependencies in build.gradle
testImplementation 'junit:junit:4.13'
testImplementation 'org.mockito:mockito-core:2.23.0'
Upvotes: 8
Reputation: 1029
From androidX use
androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'
In your dependencies section in your app level build.gradle file
for eg :
dependencies {
androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'
}
Then import
import androidx.test.rule.ActivityTestRule;
Upvotes: 14
Reputation: 371
Adding:
androidTestImplementation 'com.android.support.test:rules:1.0.2'
solves problem, but don't forget to sync the project with gradle files. Only then the changes will take effect.
Upvotes: 37
Reputation: 1651
Add these in the newer version:
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
Upvotes: 140
Reputation: 261
Add dependency.
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test:runner:0.5'
Upvotes: 11
Reputation: 339
need this add dependencies
testCompile 'com.android.support.test:rules:0.5'
testCompile 'com.android.support.test:runner:0.5'
Upvotes: 24
Reputation: 7683
There are two different types of tests you can set up in Android
Unit Tests
test/java
packagetestCompile
Instrumentation Tests
androidTest/java
packageandroidTestCompile
From what I can tell you are trying to write instrumentation tests with Espresso but have your test in the test/java
package which is for unit tests. In that case you need to move your test class to the androidTest/java
package.
Upvotes: 67