繁体   English   中英

仪表测试将作为本地单元测试在Android Studio 3(空测试套件)上运行

[英]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尝试使用该配置来运行测试; 因此,错误。

这是IDE自己创建的示例配置

有什么建议么?

提前致谢

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM