试运行失败:我一直试图在Android Studio中执行我的测试运行到以下错误无法找到仪器仪表信息:ComponentInfo {。测试/ android.support.test.runner.AndroidJUnitRunner}
我的测试类是androidTest / java目录,并有一个构造函数。 我的build.gradle是正确的了。 任何帮助表示赞赏。
测试类
@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")));
}
}
应用程序/的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'
}
你必须更新测试“编辑配置”,包括AndroidJUnitRunner作为仪表亚军。
我发现在这个视频解决方案: https://youtu.be/TGU0B4qRlHY?t=9m36s
更新
添加什么@loeschg提示:请务必检查logcat的日志,以确保自己是不是导致问题(崩溃)的测试,甚至运行之前。 在@BeforeClass可以阻止恶意代码导致的Android Studio中的“空测试套件”的消息,尽管正确设置测试运行。
虽然问题已经回答了,想通这是值得张贴对未来的访客。
请务必检查logcat的日志 ,以确保自己是不是导致问题(崩溃)的测试,甚至运行之前。 我在有恶意代码@BeforeClass
这导致Android Studio中的“空测试套件”的消息,尽管正确设置测试运行块。
如果你得到这样的错误信息:
Class not found: "com.example.product.package.name.SomeSpecificTest" Empty test suite.
您需要确保,如果你的咖啡的测试中加入下Android Instrumented Tests
中部分Run/Debug Configurations
。
这似乎是安卓3.1.3工作室有时将其添加到不正确Android JUnit
部分替代。
确保它看起来是这样的:
此外,值得一提的是,我注意到,虽然未发生对我来说这个问题Debug
选择构建变量。
我相当肯定android.support.test.runner.AndroidJUnitRunner
由亚军库提供。
- 安装Android的支持库 (你已经做了)
- 添加亚军到你的依赖
它应该是这样的
dependencies {
...
androidTestCompile 'com.android.support.test:runner:0.2'
}
如果现在还有人在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(APP)被指定。 更改到androidx如果你正在使用它(androidx.test.runner.AndroidJUnitRunner)
希望它可以帮助别人,干杯!