Issue
Can't make my Espresso UI test work. Where's the problem?
What result should I get for this simple app to consider that it's working?
I have "android.support.test.runner.AndroidJUnitRunner" for Instrumentation runner in Edit Confirurations
.
From AndroidManifest.xml:
<instrumentation
android:name="android.support.test.runner.AndroidJUnitRunner"
android:targetPackage="my.package"/>
From build.gradle:
defaultConfig {
applicationId "my.package"
minSdkVersion 18
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
packagingOptions {
exclude 'LICENSE.txt'}
repositories { jcenter()}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:support-annotations:22.2.0'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.android.support.test:rules:0.3'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
testCompile 'junit:junit:4.12'}
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = (EditText)findViewById(R.id.edit_text);
Button button = (Button) findViewById(R.id.confirm);
final TextView textView = (TextView)findViewById(R.id.you_entered);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setText("You entered: " + editText.getText());
}
});
}
}
ApplicationTest.java
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}
MainActivityTest
public class MainActivityTest extends ActivityInstrumentationTestCase2 <MainActivity> {
Activity activity;
public MainActivityTest() {
super(MainActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
activity = getActivity();
}
@SmallTest
public void testInputOutput() {
Espresso.onView(ViewMatchers.withId(R.id.edit_text)).perform(ViewActions.click())
.perform(ViewActions.typeText("Espresso"));
Espresso.onView(ViewMatchers.withId(R.id.confirm)).perform(ViewActions.click());
Espresso.onView(ViewMatchers.withId(R.id.you_entered)).check(ViewAssertions.matches
(ViewMatchers.withText("Espresso")));
assertEquals(((TextView)ViewMatchers.withId(R.id.you_entered)).getText(), "Espresso");
}
}
The results of running all tests:
Testing started at 12:36 ...
Installing my.package
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/my.package"
pkg: /data/local/tmp/my.package
Success
Uploading file
local path: /home/jane_doe/project/android/MyTestApp/app/build/outputs/apk/app-debug-androidTest-unaligned.apk
remote path: /data/local/tmp/my.package.test
Installing my.package.test
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/my.package.test"
pkg: /data/local/tmp/my.package.test
Success
Running tests
Test running startedTest running failed: No test results
Empty test suite.
The result of running MainActivityTest only:
Testing started at 12:39 ...
12:39:39: Executing external tasks 'cleanTest test --tests cosysoft.cupofcoffee.MainActivityTest'...
:app:cleanTest UP-TO-DATE
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72220Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42220Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJava UP-TO-DATE
:app:preCompileDebugUnitTestJava
:app:preDebugUnitTestBuild UP-TO-DATE
:app:prepareDebugUnitTestDependencies
:app:processDebugUnitTestJavaRes UP-TO-DATE
:app:compileDebugUnitTestJava UP-TO-DATE
:app:compileDebugUnitTestSources UP-TO-DATE
:app:mockableAndroidJar UP-TO-DATE
:app:assembleDebugUnitTest UP-TO-DATE
:app:testDebug
:app:testDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:testDebug'.
> No tests found for given includes: [my.package.MainActivityTest]
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 3.079 secs
No tests found for given includes: [my.package.MainActivityTest]
Solution
Note that you are using the deprecated ActivityInstrumentationTestCase2 and that
TestCases like ActivityInstrumentationTestCase2 or ServiceTestCase are deprecated in favor of ActivityTestRule or ServiceTestRule.
So try switchwing to using the rules, which is actually pretty straightforward. Also, be sure to use the correct annotations. Check my other answer here to get more useful references.
Answered By - appoll
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.