有关使用gradle或android studio的Android单元测试的问题

我正在我的项目中编写一些测试用例,我对android studio& amp;我最近几天遇到了gradle,搜索后无法得到好的答案.

以下是我遇到的情况,他们真的很困扰我.

情况1:

当我将测试用例放在androidTest文件夹中并运行graldew cAT时,还要使用注释@AndroidJUnit4作为测试类.我可以运行单元测试并获得正确的结果.但在我刚刚将@AndroidJUnit4更改为@MockitoJUnitRunner之后(我需要模拟上下文). android studio或gradle找不到任何测试,只能告诉“空套”.

情况2:

当我将测试用例放在测试文件夹中并运行graldew测试时,也使用注释@MockitoJUnitRunner.它可以成功找到测试.但我猜它只在本地运行.如果测试用例依赖于某些本机lib,它将给出失败消息,例如:java.lang.UnsatisfiedLinkError:java.library.path中没有libxx

所以这里是问题:

问题1:

看来我们可以将测试代码放在src / test或src / androidTest中.那么这两个文件夹之间有什么区别?

问题2:

gradlew cAT和gradle测试有什么区别?这两个命令是否与项目中的文件夹(我提到的test / androidTest文件夹)相关?

问题3:

在我的情况下,我需要编写一些测试用例,它依赖于Context和native.我该怎么办?

解决方法:

由于这实际上是3个问题,因此最好创建3个单独的SO问题.无论如何,这里是答案:

答案1:

src / test文件夹用于“常规”JUnit单元测试.这些是在常规JVM中运行的测试.

src / androidTest文件夹适用于需要运行Android设备或模拟器的任何测试.这是您的Espresso测试将存在的地方.

答案2:

命令gradlew cAT或gradlew connectedAndroidTest运行任何需要连接设备(cAT代表Connected Android Test)的测试,这些测试位于src / androidTest目录中,而命令gradle测试只运行src / test目录中的单元测试.

答案3:

如果您的单元测试取决于上下文,请考虑使用Robolectric进行单元测试.这将使您可以访问上下文.有关如何使用Robolectric的好例子可以在Corey Latislaw’s “Android Katas” repo找到.

编辑

情况1:
我不确定这是否是您遇到的问题,但是当我遇到这个“空测试套件”错误时(当我在目录中明显有测试时),这是因为我忘了包含Android JUnit Test Instrumentation Runner在我的模块的build.gradle文件中.将它包含在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"
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐