Instrumentation测试将作为Android Studio 3(空测试套件)上的Local Unit测试运行,

我在Android Studio 3.0.1和Kotlin中运行Instrumentation Tests时遇到了一些问题(我之前的Android Studios和Java没有这样的问题)。 我在androidTest包中创建了这个(非常简单的)类[ 引用 ],如下所示:

 @RunWith(AndroidJUnit4::class) @LargeTest class DiscoverActivityTest { @JvmField @Rule val mDiscoverActivityTestRule = ActivityTestRule(DiscoverActivity::class.java) @Test fun onViewLoadedShowDiscoverFragment() { onView(withId(R.id.discoverFragmentView)).check(matches(isDisplayed())) } } 

当我尝试运行测试时,有两个问题。 首先,它希望在控制台中运行测试,而无需打开模拟器或将apk包部署到设备(因为这只是一个正常的本地unit testing)。 另外,我也得到这个错误信息:

未find类:“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 Android Instrumented Tests下创建一个新的Run/Debug Configurations ,选择这个配置并使用这个配置运行项目(Shift + F10),仪器测试将运行得很好(所有这些都一起) 。 但是,当我尝试单独运行测试(使用每个单独的测试方法或测试类旁边的小玩图标)时,将会创建一个名为“ Unknown的新配置,并以测试本身命名(例如上面的代码中的DiscoverActivityTest.onViewLoadedShowDiscoverFragment )然后IDE尝试使用该配置来运行测试; 因此,错误。

这是IDE将自行创建的示例配置

有什么建议么?

提前致谢

最终更新:完全 重新安装 Android Studio之后,问题就解决了。 所以我想IDE的配置有什么问题。

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

尝试在build.gradle中添加“testInstrumentationRunner”。