我是测试世界的新手,甚至还不是Android测试世界的新手。在对Robolectric进行研究以帮助进行android测试时,最让我感到困惑的是。有时在网络上,我看到人们在使用testCompile
在引用Robolectric时在gradle构建脚本的依赖中关键字而其他人使用时androidTestCompile
。当然两者都无效吗?
有人可以解释两者之间的区别吗?使用Robolectric时应该使用哪一个?
Answers:
简单来说testCompile
就是单元测试的配置(位于src / test中),androidTestCompile
用于测试api(位于src / androidTest中)。由于您打算编写单元测试,因此应使用testCompile
。
更新:两者之间的主要区别是源集test
运行在常规Java JVM中,而源集androidTest
测试运行在Android设备(或仿真器)上。
testCompile
配置。添加到androidTestCompile
配置中的依赖项仅对'src / androidTest'中的源可用,该源实际上内置于APK中并已部署在设备上。
回答您的问题-将testCompile用于robolectric
为什么,因为robolectric在JVM上运行,模拟了所有android设备的行为。
testCompile和androidTestCompile是“按约定”的android文件夹,gradle在运行android插件提供的任务时会使用它们。
androidTestDebug从androidTest文件夹中选择测试,testDebug从test文件夹中选择测试,
同样,这些仅是常规文件夹,您可以为这些配置提供源集
注意:espresso是一个很棒的库,请尝试远离robolectric :)
//单元测试
testCompile 'junit:junit:4.12'
上面的代码是android studio中build.gradle文件中JUnit 4的依赖项。您会看到它具有testCompile,因为JUnit在JVM上运行并且不需要设备或仿真器即可运行。这也意味着JUnit测试将不需要运行应用程序上下文,如果需要,我们将需要“ MOCK”它们。
//测试单元测试
androidTestCompile('com.android.support.test:runner:0.5', {
exclude group: 'com.android.support', module: 'support-annotations'
})
现在我们在这里看到androidTestCompile,因为这一次我们打算使用设备或仿真器进行测试,即仪表测试。为了澄清,我建议阅读developer.android.com