关于使用gradle或Android studio进行Android单元测试的问题
我正在我的项目中编写一些测试用例,最近几天我遇到了一大堆关于android studio&gradle的android单元测试的问题,在搜索后无法得到好的答案 以下是我遇到的情况,它们真的让我很困扰 情景1: 当我将测试用例放在androidTest文件夹中,运行关于使用gradle或Android studio进行Android单元测试的问题,android,unit-testing,android-studio,gradle,Android,Unit Testing,Android Studio,Gradle,我正在我的项目中编写一些测试用例,最近几天我遇到了一大堆关于android studio&gradle的android单元测试的问题,在搜索后无法得到好的答案 以下是我遇到的情况,它们真的让我很困扰 情景1: 当我将测试用例放在androidTest文件夹中,运行graldew cAT并对测试类使用注释@AndroidJUnit4时。我可以运行单元测试并得到正确的结果。但是在我刚刚将@AndroidJUnit4更改为@MockitoJUnitRunner之后(我需要模拟上下文)。android
graldew cAT
并对测试类使用注释@AndroidJUnit4
时。我可以运行单元测试并得到正确的结果。但是在我刚刚将@AndroidJUnit4
更改为@MockitoJUnitRunner
之后(我需要模拟上下文)。android studio或gradle找不到任何测试,只能告诉“空西装”
情景2:
当我将测试用例放在test文件夹中,运行graldew test
并使用注释@MockitoJUnitRunner
时。它可以成功地找到测试。但我想它只在本地运行。如果测试用例依赖于某个本机库,它将给出失败消息,如:java.lang.unsatifiedlinkerror:no libxx in java.library.path
以下是一些问题:
问题1:
似乎我们可以将测试代码放在src/test或src/androidTest中。那么这两个文件夹之间有什么区别呢
问题2:
gradlew cAT
和gradle test
之间有什么区别?这两个命令是否与项目中的文件夹(test/androidTest我提到的文件夹)相关
问题3:
在我的情况下,我需要编写一些测试用例,它们依赖于上下文和本机。我应该怎么做?因为这实际上是3个问题,所以最好创建3个单独的SO问题。无论如何,以下是答案: 答案1:
src/test
文件夹用于“常规”JUnit测试。这些是在常规JVM中运行的测试
src/androidTest
文件夹用于任何需要运行Android设备或模拟器的测试。这就是你的测试的地方
答案2:
命令gradlew cAT
或gradlew connectedAndroidTest
运行任何需要连接设备的测试(cAT
代表已连接的安卓测试),这些设备位于src/androidTest
目录中,而命令gradle Test
只运行单元测试,位于src/Test
目录中
答案3:
如果您的单元测试依赖于上下文,请考虑使用单元测试。这将使您能够访问上下文。有关如何使用Robolectric的示例,请参见
编辑 情景1: 我不确定这是否是您正在经历的,但当我遇到这个“空测试套件”错误时(当我在目录中明显有测试时),这是因为我忘了在模块的build.gradle文件中包含Android JUnit测试工具运行程序。将其包含在您的android
部分的defaultConfig
部分中,如下所示:
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"
}
}
非常好的回答和感谢。关于答案2,这是否意味着
gradlewcat
将只运行androidTest
文件夹中的测试?不客气!如果您接受这一正确答案,我们将不胜感激。是,gradlew cAT
将只运行androidTest
文件夹中的测试。确定。你能帮我解释一下我在问题中提到的情况吗?我不知道如何检测测试用例的机制。谢谢!我会编辑我的答案,包括我所知道的。我会尝试你的新版本的解决方案。谢谢调查!