简体   繁体   中英

Android Espresso: Test running failed. No test results Empty test suite. Why?

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]

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM