【问题标题】:How to run simple junit tests inside Android Studio 2.1.3如何在 Android Studio 2.1.3 中运行简单的 junit 测试
【发布时间】:2016-08-18 02:10:20
【问题描述】:

最近有一个短暂的时刻,Android Studio 中的 Build Variants 视图包含一个“单元测试”选项,如果选中该选项,您只需选择测试即可在 Android Studio 中轻松运行基本单元测试上课并点击“跑步”。然后我认为当 Android Studio 2.0 发布时,他们从构建变体菜单中删除了该选项。所有文档都说您应该能够右键单击测试类并说“运行”,但是每当我这样做时,系统都会提示我选择一个用于仪器测试的部署目标,而我对此不感兴趣。我在这里错过了什么吗?您如何在 Android Studio 2.1.3 中运行基本单元测试?

这是我当前 build.gradle 的摘录,其中包含我之前运行单元测试所需的代码:

android {
compileSdkVersion project.COMPILE_SDK_VERSION.toInteger()
buildToolsVersion project.BUILD_TOOLS_VERSION

defaultConfig {
    minSdkVersion    project.SDK_MIN_VERSION_LIBRARY
    targetSdkVersion project.COMPILE_SDK_VERSION.toInteger()
    versionName project.VERSION_NAME
    versionCode project.VERSION_CODE.toInteger()


}
lintOptions {
    abortOnError false
}
buildTypes {
    debug{
        versionNameSuffix = "DEBUG"
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
sourceSets {
    androidTest {
        setRoot('src/test')
        java.srcDir file('src/test/java')
        resources.srcDir file('src/test/resources')
    }

}
testOptions {
    unitTests.returnDefaultValues = true
}
android.testOptions.unitTests.all {
    // Configure includes / excludes
    include '**/*Test.class'
    exclude '**/espresso/**/*.class'

    // Configure max heap size of the test JVM
    maxHeapSize = '2048m'

    // Configure the test JVM arguments - Does not apply to Java 8
    jvmArgs '-XX:MaxPermSize=4096m', '-XX:-UseSplitVerifier'

    // Specify max number of processes (default is 1)
    maxParallelForks = 4

    // Specify max number of test classes to execute in a test process
    // before restarting the process (default is unlimited)
    forkEvery = 250

    // configure whether failing tests should fail the build
    ignoreFailures false

    // use afterTest to listen to the test execution results
    afterTest { descriptor, result ->
        println "Executing test for ${descriptor.parent}: ${descriptor.name} with result: ${result.resultType}"
    }
}

}

【问题讨论】:

  • "如何在 Android Studio 2.1.3 中运行基本单元测试?" -- 你按照你描述的做(右键单击类并选择运行),或者单击编辑器中类声明旁边的装订线图标。 “但是每当我这样做时,系统都会提示我选择一个用于仪器测试的部署目标,而我对此不感兴趣”——您的单元测试是否在模块中的 test/ 源集中?你有没有在 build.gradle 中做任何与源代码集有关的时髦的事情?
  • 啊……是的,我做到了!我有过去几年需要的代码。我用相关代码更新了我的问题。你发现问题了吗?

标签: android unit-testing


【解决方案1】:

您已覆盖 androidTest 源集以查看 src/test/。因此,Gradle 认为您的 test/ 代码代表仪器测试。

我应该删除整个 sourceSets 块吗?

理想情况下,您遵循库存配置:androidTest/ 持有仪器测试,test/ 持有单元测试。

如果你想要别的东西,那很好。但是,当您右键单击仪器测试类并选择运行时,它将运行仪器测试。因此,如果您希望 androidTest/ 进行单元测试,并希望 instrumentationTestBecauseLongDirectoryNamesAreFun/ 进行仪器测试,那很好,但您需要跟踪自己的位置。

因此,您是摆脱 sourceSets 闭包,还是更新它以反映您希望仪器测试和单元测试的位置,这取决于您。

【讨论】:

  • 当然。我删除了 sourceSets 闭包以使用标准配置,一切正常。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-04-10
  • 2015-05-04
  • 2018-12-20
  • 2013-07-24
  • 2021-12-09
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
相关资源
最近更新 更多