当前位置: 首页 > 知识库问答 >
问题:

检测测试将在Android Studio3(空测试套件)上作为本地单元测试运行

堵睿范
2023-03-14

我在Android Studio3.0.1和Kotlin中运行instrumentation tests时遇到了一些问题(我在以前的Android Studios和Java中没有遇到这样的问题)。我在AndroidTest包中创建了这个(非常简单的)类[reference],它如下所示:

@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中的Android Instrumented tests下创建一个新配置,选择此配置并使用此配置运行项目(Shift+F10),那么检测测试将运行得很好(所有这些测试一起运行)。但是当我尝试单独运行测试时(使用每个单独测试方法或测试类旁边的小播放图标),将创建一个以测试本身命名的unknowle类型的新配置(例如上面代码中的DiscoverActivityTest.onViewLoadedShowDiscoverFragment),然后IDE尝试使用该配置来运行测试;因此出现了错误。

有什么建议吗?

提前致谢

最终更新:经过Android Studio的重新安装,这个问题得到了解决。所以我猜是IDE的配置出了问题什么的。

共有1个答案

越勇锐
2023-03-14
android {
        defaultConfig {
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
}

尝试在您的build.gradle中添加“TestInstrumentationRunner”。

 类似资料:
  • Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。

  • 英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其

  • 我有一个Android应用程序的测试套件,所有单元测试都运行良好。但是,每当我对一个单元测试类(例如,)进行一个更改时,当尝试再次运行该类时,我会得到以下消息 如果我做了一个gradle clean,然后再次运行类测试,它运行得很好(但需要4分钟来做……),但随后一个新的更改会再次破坏它。 有什么解决方法吗?我不确定应该发布哪种测试配置。我正在使用单元测试工件,我的测试位于文件夹中

  • 22.13.5.测试检测 测试任务检测哪些类是通过检查编译测试类的测试类。默认情况下它会扫描所有.calss文件.可以自定义包含/排除哪些类需不要要被扫描.所使用不同的测试框架(JUnit/ TestNG)时测试类检测使用不同的标准。 当使用JUnit,我们扫描的JUnit3和JUnit4的测试类。如果任一下列条件匹配,类被认为是一个JUnit测试类: 类或父类集成自TestCase或Groovy

  • 我试图使用XML和TestNG运行一个测试套件,但是我总是同时使用Eclipse和命令行得到相同的消息: 该文件已正确读取,但测试似乎没有运行。 以下是我的testng.xml的内容: 这是我的目录结构在Eclipse中的样子: 此外,这也是我试图通过命令行运行测试套件的方式: 我尝试过通过eclipse清理项目,但似乎没有帮助。我也试过跑步: < code>mvn clean,但它也没有完成工作

  • 单元测试方法上方是否需要注释? 是否需要在方法前缀“test”,或者这只是用于JUnit测试? 可以在的子包中进行测试吗? 但是这篇文章的主要问题是为什么测试运行者没有检测到我的测试?