对 Android Gradle 中的 testCompile 和 androidTestCompile 感到困惑
Confused about testCompile and androidTestCompile in Android Gradle
我是测试领域的新手,对 Android 测试领域更是如此。在对 Robolectric 进行研究以帮助对 android 进行测试时,有一件事最让我感到困惑。有时在网络上,我看到人们在引用 Robolectric 时在 gradle 构建脚本的依赖项中使用 testCompile
关键字,而其他人使用 androidTestCompile
。当然两者都无效?
谁能解释一下两者之间的区别,以及在使用 Robolectric 时应该使用哪一个?
只是testCompile
是单元测试的配置(那些位于src/test)和androidTestCompile
用于测试api(位于 src/androidTest)。由于您打算编写单元测试,因此您应该使用 testCompile
.
更新: 两者之间的主要区别是 test
源集 运行 在常规 Java JVM 中,而 androidTest
sourceset 在 Android 设备(或模拟器)上测试 运行。
回答您的问题 - 使用 testCompile robolectric
为什么,因为 robolectric 在模拟所有 android 设备行为的 JVM 上运行。
testCompile 和 androidTestCompile 是 "by convention" android 文件夹,gradle 在 android 插件提供的 运行 任务中使用这些文件夹。
androidTestDebug 从 androidTest 文件夹中选取测试,
testDebug 从测试文件夹中选择测试,
同样,这些只是您可以为这些配置提供源集的约定文件夹
注意:espresso 是一个很棒的库,请尝试远离 robolectric :)
//单元测试
testCompile 'junit:junit:4.12'
以上代码是 android studio 中 build.gradle 文件中 JUnit 4 的依赖项。
您会看到它具有 testCompile,因为 JVM 运行s 在 JVM 上并且不需要设备或模拟器即可 运行。这也意味着 JUnit 测试不需要 运行 的应用程序上下文,如果需要,我们需要 "MOCK" 它们。
//仪器单元测试
androidTestCompile('com.android.support.test:runner:0.5', {
exclude group: 'com.android.support', module: 'support-annotations'
})
现在我们看到这里是androidTestCompile,因为这次我们打算使用设备或者模拟器进行测试,也就是Instrumentation测试。为了更好地说明,我建议阅读 developer.android.com
为JVM测试或单元测试添加依赖(测试那些只依赖java环境,我们不需要任何android环境)。
我们使用 testCompile 指令。示例:
dependencies {
testCompile gradleTestKit()
}
要为 Instrumentation 测试添加依赖(那些测试主要依赖 Android 环境),我们使用 androidTestCompile
指令。
我是测试领域的新手,对 Android 测试领域更是如此。在对 Robolectric 进行研究以帮助对 android 进行测试时,有一件事最让我感到困惑。有时在网络上,我看到人们在引用 Robolectric 时在 gradle 构建脚本的依赖项中使用 testCompile
关键字,而其他人使用 androidTestCompile
。当然两者都无效?
谁能解释一下两者之间的区别,以及在使用 Robolectric 时应该使用哪一个?
只是testCompile
是单元测试的配置(那些位于src/test)和androidTestCompile
用于测试api(位于 src/androidTest)。由于您打算编写单元测试,因此您应该使用 testCompile
.
更新: 两者之间的主要区别是 test
源集 运行 在常规 Java JVM 中,而 androidTest
sourceset 在 Android 设备(或模拟器)上测试 运行。
回答您的问题 - 使用 testCompile robolectric
为什么,因为 robolectric 在模拟所有 android 设备行为的 JVM 上运行。
testCompile 和 androidTestCompile 是 "by convention" android 文件夹,gradle 在 android 插件提供的 运行 任务中使用这些文件夹。
androidTestDebug 从 androidTest 文件夹中选取测试, testDebug 从测试文件夹中选择测试,
同样,这些只是您可以为这些配置提供源集的约定文件夹
注意:espresso 是一个很棒的库,请尝试远离 robolectric :)
//单元测试
testCompile 'junit:junit:4.12'
以上代码是 android studio 中 build.gradle 文件中 JUnit 4 的依赖项。 您会看到它具有 testCompile,因为 JVM 运行s 在 JVM 上并且不需要设备或模拟器即可 运行。这也意味着 JUnit 测试不需要 运行 的应用程序上下文,如果需要,我们需要 "MOCK" 它们。
//仪器单元测试
androidTestCompile('com.android.support.test:runner:0.5', {
exclude group: 'com.android.support', module: 'support-annotations'
})
现在我们看到这里是androidTestCompile,因为这次我们打算使用设备或者模拟器进行测试,也就是Instrumentation测试。为了更好地说明,我建议阅读 developer.android.com
为JVM测试或单元测试添加依赖(测试那些只依赖java环境,我们不需要任何android环境)。
我们使用 testCompile 指令。示例:
dependencies {
testCompile gradleTestKit()
}
要为 Instrumentation 测试添加依赖(那些测试主要依赖 Android 环境),我们使用 androidTestCompile
指令。