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 库提供的。
- 安装 Android Support Repository(您已经完成)
- 将运行器添加到您的依赖项
它应该是这样的
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 Configurations
的 Android 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)
希望对大家有所帮助,干杯!
尝试在 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 库提供的。
- 安装 Android Support Repository(您已经完成)
- 将运行器添加到您的依赖项
它应该是这样的
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 Configurations
的 Android 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)
希望对大家有所帮助,干杯!