bup*_*der 4 android unit-testing gradle android-studio
我正在我的项目中编写一些测试用例,我最近几天遇到了android studio&gradle的android单元测试问题,搜索后无法得到好的答案.
以下是我遇到的情况,他们真的很困扰我.
情况1:
当我将测试用例放在androidTest文件夹中并运行时graldew cAT,也使用@AndroidJUnit4测试类的注释.我可以运行单元测试并获得正确的结果.但经过我只是改变了@AndroidJUnit4到@MockitoJUnitRunner(我需要嘲笑的上下文中).android studio或gradle找不到任何测试,只能告诉"空套".
情况2:
当我将测试用例放在测试文件夹中并运行时graldew test也使用注释@MockitoJUnitRunner.它可以成功找到测试.但我猜它只在本地运行.如果测试用例依赖于某些本机lib,它将给出如下的失败消息:java.lang.UnsatisfiedLinkError: no libxx in java.library.path
所以这里是问题:
问题1:
看来我们可以将测试代码放在src/test或src/androidTest中.那么这两个文件夹之间有什么区别?
问题2:
gradlew cAT和之间有什么区别gradle test?这两个命令是否与项目中的文件夹(我提到的test/androidTest文件夹)相关?
问题3:
在我的情况下,我需要编写一些测试用例,它依赖于Context和native.我该怎么办?
由于这实际上是3个问题,因此最好创建3个单独的SO问题.无论如何,这里是答案:
答案1:
该src/test文件夹用于"常规"JUnit单元测试.这些是在常规JVM中运行的测试.
该src/androidTest文件夹适用于需要运行Android设备或模拟器的任何测试.这是您的Espresso测试所在的地方.
答案2:
该命令gradlew cAT或gradlew connectedAndroidTest运行任何需要连接设备(cAT代表连接Android测试)的测试,这些测试位于src/androidTest目录中,而命令gradle test只在src/test目录中运行单元测试.
答案3:
如果您的单元测试取决于上下文,请考虑使用Robolectric进行单元测试.这将使您可以访问上下文.关于如何使用Robolectric的好例子可以在Corey Latislaw的"Android Katas"回购中找到.
编辑
情况1:
我不确定这是否是您遇到的问题,但是当我遇到这个"空测试套件"错误时(当我在目录中明显有测试时),这是因为我忘了包含Android JUnit在我的模块的build.gradle文件中测试Instrumentation Runner.将其包含在defaultConfig您的android部分中,如下所示:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.kiodev.example"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |