Unit testing support(译文)

来源:互联网 发布:painter软件设置中文 编辑:程序博客网 时间:2024/05/01 07:29

文章英文版来源:http://tools.android.com/tech-docs/unit-testing-support

它如何工作

单元测试在你开发机上的当地JVM上运行,我们的gradle ce 插件将会编译在src/test/java目录里的源码并用Gradle测试机制执行它,在运行时期,测试会针对你无最终修正版的android.jar的一个版本来执行,这可以让你使用流行的mocking 库,如 Mockito.
你将要在你模块中的build.gradle文件具体配置你测试的依赖库,例如:

dependencies {  testCompile 'junit:junit:4.12'  testCompile "org.mockito:mockito-core:1.9.5"}

设置你的Android Studio

为能在AS使用单元测试,你要做以下这些步骤 (点击屏幕快捷能全屏观看)
1.更新 build.gradle到android gradle插件版本为 1.1.0-rc1或者更新(即可在gradle 文件中手动更新,也可在文件UI中的项目结构中更新)
图片
添加所需的测试依赖库到app/build.gradle(观看上面的代码)
图片网址
3.同步你的项目
4.打开这个”Build variants”工具视窗(在其左边) 且改test artifact为”Unit tests”
图片
5.为你的测试代码创建目录,如:src/test/java.你可以用命令符或在项目视窗的项目预览中完成,这个新目录会在这个位置突显绿色,注意:测试代码目录的名字使用遵守惯例的gradle插件决定的。
6.创建你的测试,你可以打开一个类,右击它的名字后,选择 “Go to > Test”来完成添加测试类。
7.右击你的测试类或测试方法后,选择”Run…”.
8.(可选性的操作)你可以直接使用Gradle来减少编译时间,为了达到这种效果,去Run菜单,选择”Edit configurations”,那里,你会发现默认的JUnit模板,在before-launch中”Make”移除后用”Gradle aware make”取代(task的名字为空)

用Gradle运行

为了运行你的单元测试,仅执行测试任务:./gradlew test –continue.,如果遇到测试失败,链接到HTML的报告日志(每一个build variant都会有一个)会在执行的最后打印出
这仅是一个固定测试任务,事实上所有测试任务都叫testDebug和 testRelease,你仅仅想要运行一些测试,可以使用gradle –tests命令,你可以用./gradlew testDebug –tests=’*.MyTestClass’运行它。
由于test仅仅简约了”testDebug testRelease”,如果你想要确保所有任务在建立组合中被执行,–continue命令还是需要的,否则Gradle一旦在testDebug(失败的测试导致任务变为失败)停止后,那么testRelease终究就不会被执行。

风格和构造类型支持

和写代码一样,你可以用给出的风格和构造(看这里)来具体详细分类单元测试,普遍来说,我们推荐和产品代码相一致的源码树的单元测试,那就是:

Production class Test class src/main/java/Foo.java src/test/java/FooTest.java src/debug/java/Foo.java src/testDebug/java/FooTest.java src/myFlavor/java/Foo.java src/testMyFlavor/java/FooTest.java

*注意:当用gradle运行tests时候,我们执行你代码的每一个variant(看这里),这意味着测试最终会执行两次以上(一次是你代码的release build,另一次是你的产品代码的debug build).

方法…不要欺骗

常用来运行的andorid.jar是没有包含任何代码-这是由设备中的安卓系统映像提供的,反而,所有方法会抛出异常(默认来说),这是为确保你的单元测试仅仅测试你的代码且不用取决任何安卓平台地实际情况(这样你就会被明显的欺骗了,例如:使用Mockito),如果那里有问题,你可以添加下面的代码块到你build.gradle文件中来改变这行为。

android {  // ...  testOptions {     unitTests.returnDefaultValues = true  }}

我们意识到:当你使用Log,TextUtils这些类时,这默认设置的情况会产生问题,不过我们会在未来释放版本中进一步解决这问题。

0 0
原创粉丝点击