android - 在 Android Studio 中运行仪器测试的问题;没有找到类“android.test.runner.AndroidJUnitRunner”
问题描述
我正在尝试在 android studio 中运行一个测试用例,它应该打开导航抽屉,单击一个菜单项,然后检查它是否导航到该项目。
当我尝试运行测试时,出现以下错误
Started running tests
Test running failed: Instrumentation run failed due to 'Process crashed.'
Empty test suite.
Logcat 显示;
-02-04 13:41:17.703 10121-10121/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.damhan.dublinbusassist, PID: 10121
java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{com.damhan.dublinbusassist.test/android.test.runner.AndroidJUnitRunner}: java.lang.ClassNotFoundException: Didn't find class "android.test.runner.AndroidJUnitRunner" on path: DexPathList...
这是我的测试用例:
package com.damhan.dublinbusassist;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.view.Gravity;
import org.junit.Test;
import org.junit.runner.RunWith;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.contrib.DrawerActions.open;
import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
import static android.support.test.espresso.contrib.NavigationViewActions.navigateTo;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
@RunWith(AndroidJUnit4.class)
public class NavigationDrawerTest {
@Test
public void clickRouteNavigationItem_ShowsRouteScreen() {
// Open Drawer to click on navigation.
onView(withId(R.id.drawer_layout))
.check(matches(isClosed(Gravity.LEFT))) // Left Drawer should be closed.
.perform(open()); // Open Drawer
onView(withId(R.id.nav_view))
.perform(navigateTo(R.id.route_menu));
String expectedNoStatisticsText = InstrumentationRegistry.getTargetContext()
.getString(R.string.routePageText);
onView(withId(R.id.route_menu)).check(matches(withText(expectedNoStatisticsText)));
}
}
而我的 build.grade 如下;
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.damhan.dublinbusassist"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
// Required -- JUnit 4 framework
testImplementation 'junit:junit:4.12'
// Optional -- Mockito framework
testImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'com.android.support:support-annotations:27.1.1'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-accessibility:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-web:3.0.2'
androidTestImplementation 'com.android.support.test.espresso.idling:idling-concurrent:3.0.2'
}
我对编写测试用例非常陌生,所以我意识到可能会出现错误,并且我从示例 google android-testing github 中获取了一些内容,因此当前可能命名不正确,但我希望它至少可以运行!
解决方案
是android.support.test.runner.AndroidJUnitRunner
。通知support
部分
推荐阅读
- amazon-web-services - 无法从 Windows 10 SSH 到 Amazon Linux 实例。我将 EC2Tutorial.pem 保存在我的桌面上。请建议
- javascript - 如何使用创建嵌套的子 html和 HTML 中的 JavaScript 或 jQuery?
- firebase - 在 Cloud Firestore 中的顶级集合和子集合之间有一个桥接文档有什么真正的缺点吗?
- python - Pandas python相关问题而不是排序
- node-red - 如何在linux上设置Node Red log文件?
- r - 更新存储在变量中的数据框名称的函数
- bash - 如果我必须通过 bash 脚本运行应用程序,如何在控制台上打印 Scala 变量(在 scala 对象中)?
- java - WAS Liberty:ClassNotFoundException:[Ljava.lang.String
- r - 有没有办法在 Rworldmap 上添加标签或城市名称?
- python - 为什么 qt 中的“构建”选项卡对我无效?