名为mockableAndroidJar的android-gradle任务如何在单元测试中实际使用它

名为mockableAndroidJar的android-gradle任务如何在单元测试中实际使用它,android,unit-testing,android-gradle-plugin,Android,Unit Testing,Android Gradle Plugin,当我运行./gradlew任务时,我注意到一个名为mockableAndroidJar的构建任务。描述如下: 创建适用于单元测试的android.jar版本 有人能给我一个例子,我如何在代码中使用这个jar模拟吗 从中我看到了以下几点: $./gradlew mockableAndroidJar Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m Java HotSpot(TM) 64-Bit Server VM warning: ignoring

当我运行./gradlew任务时,我注意到一个名为mockableAndroidJar的构建任务。描述如下:

创建适用于单元测试的android.jar版本

有人能给我一个例子,我如何在代码中使用这个jar模拟吗

从中我看到了以下几点:

    $./gradlew mockableAndroidJar
Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=768m; support was removed in 8.0
Incremental java compilation is an incubating feature.
:app:mockableAndroidJar UP-TO-DATE

BUILD SUCCESSFUL

Total time: 1.226 secs
单元测试在开发机器上的本地JVM上运行。我们的gradle插件将编译src/test/java中的源代码,并使用常用的gradle测试机制执行它。在运行时,将对修改后的android.jar版本执行测试,其中所有最终修改器都已剥离。这允许您使用流行的模拟库,如Mockito

但我的问题是,有人能告诉我如何让我的测试使用这个新的android.jar文件,而不是当前的一个有期末考试的类吗?如何将测试点改为使用这个jar?我看到了,但它没有告诉我如何在测试中使用它,只是给出了理论。实际上,我从shell运行了以下命令:

./gradlew mockableAndroidJar
结果如下:

    $./gradlew mockableAndroidJar
Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=768m; support was removed in 8.0
Incremental java compilation is an incubating feature.
:app:mockableAndroidJar UP-TO-DATE

BUILD SUCCESSFUL

Total time: 1.226 secs

所以我想我的目录结构会有一些变化,但我没有看到任何变化。jar文件是否自动为我交换?

当我在针对API级别23的项目中运行该目标时,它会生成以下文件:

./build/generated/mockable-android-23.jar
这个jar文件包含API级别23的所有存根公共类定义,除了所有的最终修饰符都已删除以便可以模拟之外

此jar文件会自动添加到测试类路径中,以便在编译和运行测试时,在命令行上运行单元测试时可以访问这些类进行模拟:

./gradlew test
您必须定义自己的测试。通常将它们放在src/test/main中,并使用JUnit框架运行它们