![](/img/trans.png)
[英]Android instrumentation tests failed with ''java.lang.NoClassDefFoundError' Empty test suite.'
[英]Instrumentation Tests will run as Local Unit tests on Android Studio 3 (Empty test suite)
我在Android Studio 3.0.1和Kotlin中运行Instrumentation Tests
时遇到一些问题(以前的Android Studio和Java中没有这样的问题)。 我在androidTest
包中创建了这个(非常简单的)类[ 参考 ],如下所示:
@RunWith(AndroidJUnit4::class)
@LargeTest
class DiscoverActivityTest {
@JvmField
@Rule
val mDiscoverActivityTestRule = ActivityTestRule<DiscoverActivity>(DiscoverActivity::class.java)
@Test
fun onViewLoadedShowDiscoverFragment() {
onView(withId(R.id.discoverFragmentView)).check(matches(isDisplayed()))
}
}
当我尝试运行测试时,有两个问题。 首先,它希望在控制台中运行测试,而无需打开模拟器或将apk软件包部署到设备上(因为这只是普通的本地单元测试)。 此外,我也收到此错误消息:
找不到类:“ com.site.application.discover.DiscoverActivityTest”空测试套件。
我想在“ Edit Configuration
选项(例如类似此解决方案 )中强制使用检测器,但是新的Android Studio 3.0.1(例如,相比于2.3)没有这种选项。
更新:
这是我的gradle
文件内容:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.site.application"
minSdkVersion 17
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "default"
productFlavors {
dev {
dimension "default"
applicationIdSuffix '.dev'
versionNameSuffix "-dev"
resValue "string", "app_name", "Application Dev"
resConfigs "en", "xxhdpi"
}
mock {
dimension "default"
applicationIdSuffix '.mock'
versionNameSuffix "-mock"
resValue "string", "app_name", "Shazam Clone Mock"
}
prod {
dimension "default"
resValue "string", "app_name", "Shazam Clone"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:cardview-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:design:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:recyclerview-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:support-v4:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support.test.espresso:espresso-idling-resource:$rootProject.ext.espressoVersion"
implementation "com.android.support.constraint:constraint-layout:$rootProject.ext.constraintLayoutVersion"
implementation "com.google.code.gson:gson:$rootProject.ext.gsonVersion"
implementation "com.github.bumptech.glide:glide:$rootProject.ext.glideVersion"
implementation "com.github.ybq:Android-SpinKit:$rootProject.ext.spinKitVersion"
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation "junit:junit:$rootProject.ext.junitVersion"
testImplementation "org.mockito:mockito-core:$rootProject.ext.mockitoVersion"
testImplementation "com.nhaarman:mockito-kotlin-kt1.1:1.5.0"
androidTestImplementation "com.android.support.test.espresso:espresso-core:$rootProject.ext.espressoVersion"
androidTestImplementation "com.android.support.test.espresso:espresso-contrib:$rootProject.ext.espressoVersion"
androidTestImplementation "com.android.support.test.espresso:espresso-intents:$rootProject.ext.espressoVersion"
}
值得一提的是,如果我在Run/Debug Configurations
中的Run/Debug Configurations
Android Instrumented Tests
Run/Debug Configurations
下创建了一个新Run/Debug Configurations
,选择此配置并使用此配置运行项目(Shift + F10),则仪器测试将正常运行(所有这些都一起运行) 。 但是,当我尝试单独运行测试时(使用每个单独的测试方法或测试类旁边的小播放图标),将创建一个以测试本身命名的Unknown
类型的新配置(例如,上面代码中的DiscoverActivityTest.onViewLoadedShowDiscoverFragment
)然后IDE尝试使用该配置来运行测试; 因此,错误。
有什么建议么?
提前致谢
最终更新: 全新重新安装 Android Studio之后,此问题已解决。 所以我想IDE的配置有问题或什么。
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
尝试在build.gradle中添加“ testInstrumentationRunner”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.