Android Studio Espresso Testing Error: Empty Test Suite

Android Studio Espresso Testing Error: Empty Test Suite

尝试在 Android Studio 中执行我的测试时,我一直 运行 出现以下错误:测试 运行 失败:无法找到 ComponentInfo{.test/android.support.test.runner.AndroidJUnitRunner}

我的测试class在androidTest/java目录下,有一个构造函数。我的 build.gradle 也是正确的。感谢任何帮助。

测试Class

@RunWith(AndroidJUnit4.class)
@LargeTest
public class AndroidUITests extends ActivityInstrumentationTestCase2<UserActivity>{

    private UserActivity userActivity;

    public AndroidUITests() {
        super(UserActivity.class);
    }


    @Before
    public void setUp() throws Exception {
        super.setUp();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        userActivity = getActivity();
    }

    @Test
    public void testPhoneIconIsDisplayed() {
        // When the phone_icon view is available,
        // check that it is displayed.
        onView(ViewMatchers.withId(R.id.groupCreate)).perform(click())
                .check(matches(withText("Enter a name")));
    }
}

app/build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        testInstrumentationRunner
        "android.support.test.runner.AndroidJUnitRunner"
    }

    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

dependencies {
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
}

我相当确定 android.support.test.runner.AndroidJUnitRunner 是由 runner 库提供的。

  1. 安装 Android Support Repository(您已经完成)
  2. 将运行器添加到您的依赖项

它应该是这样的

dependencies {
    ...
    androidTestCompile 'com.android.support.test:runner:0.2'
}

您必须更新测试 "Edit Configuration" 并包括 AndroidJUnitRunner 作为工具 运行ner。

我在这个视频中找到了解决方案: https://youtu.be/TGU0B4qRlHY?t=9m36s

已更新

添加@loeschg 建议的内容: 请务必检查 logcat 日志,以确保在测试 运行 之前不会出现问题(崩溃)。 @BeforeClass 块中的错误代码可能导致 Android Studio 中出现 "Empty Test Suite" 消息,尽管已正确设置测试 运行ner.

虽然问题已经得到解答,但认为值得为未来的访问者发布。

请确保您检查logcat 日志 以确保在测试 运行 之前不会出现问题(崩溃)。尽管已正确设置测试 运行ner.

,但我的 @BeforeClass 块中的错误代码导致 Android Studio 中出现 "Empty Test Suite" 消息

如果您收到这样的错误信息:

Class not found: "com.example.product.package.name.SomeSpecificTest" Empty test suite.

您需要确保您的 Espresso 测试是否已添加到 Run/Debug ConfigurationsAndroid Instrumented Tests 部分下。

似乎 Android Studio 3.1.3 有时会错误地将其添加到 Android JUnit 部分。

确保它看起来像这样:

此外,值得一提的是,我注意到,当我选择了非 Debug 构建变体时会出现此问题。

如果有人在 2018 年仍然为此烦恼,这里是工作设置:

build.gradle需要):

<...snip...>

android {
    defaultConfig {
        <...snip...>
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        // ^^^ here it is (first)!
    }

<...snip...>

dependencies {
    <...snip...>

    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    // ^^^ all three required ^^^ (second)
}

并且在仪器测试中(也需要):

import androidx.test.espresso.Espresso.onData
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.*
import androidx.test.espresso.assertion.ViewAssertions.*
import androidx.test.espresso.matcher.RootMatchers.*
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import org.hamcrest.Matchers.*
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
@LargeTest
class ApplicationTest {
    @Test
    fun thruStillThrullyThrue() {
        // do interaction with some UI
        onView(withId(R.id.myButtonOnMyActivity)).perform(click())

        // assert expected result
        onView(withId(R.id.myTextViewOnMyActivity)).check(matches(isDisplayed()))
    }
}

// (third)

我的问题是字段 'testInstrumentationRunner' 是在 build.gradle(应用程序)中指定的。如果您正在使用它,请将其更改为 androidx (androidx.test.runner.AndroidJUnitRunner)

希望对大家有所帮助,干杯!