一步步的剖析和总结我们经历过的问题和感想。
一:概述
你会学到什么
1.更新包含JUnit和Android Testing Support Library的Gradle构建文件
3.编写运行在手机或者虚拟机上的Espresso测试
二:创建新的Android Studio工程
如果是第一次启动Android Studio,从欢迎页选择“Start a new Android Studio project”。
如果已经打开了一个工程,选择File>New>New Project…
“Create new project”向导会指导整个过程,在第一页输入如下内容:
这样会保证你的代码同codelab讲解的内容具有一致的命名。其他的选项都设置为默认,一路点击Next直到工程创建完毕。
点击Run按钮检查app是否运行正常,要么从模拟器列表中选择一个启动,要么确认开启了debug模式的设备通过USB同电脑正确连接。
app目前没有做任何事情,但是屏幕上应该显示“Hello world!”和app的名字。
三.配置支持单元测试的工程
在写测试之前,让我们做下简单的检查,确保工程配置正确。
首先,确认在Build Variants窗口内的Test Artifact中选择了”Unit Tests”。
然后,在工程的src文件夹内创建test和test/java文件夹。需要注意的是,你不能在Android视图下进行这些操作,要么在系统的文件管理器内创建,要么在工程窗口左上方点击下拉菜单选择Project视图。最终的工程结构应该是这样的:
(在codelab的剩余部分,你可以返回继续使用Android工程视图)
最后,打开工程的build.gradle(Module:app)文件,添加JUnit4依赖,点击Gradle sync按钮。
1.build.gradle 2.dependencies { 3. compile fileTree(dir: 'libs', include: ['*.jar']) 4. compile 'com.android.support:appcompat-v7:22.1.1' 5. testCompile 'junit:junit:4.12' 6.} |
四.创建第一个单元测试
现在,万事俱备,让我们开始写第一个测试吧。首先,创建一个非常简单的被测类:Calculator类。
然后,向类中添加一些基本的算术运算方法,比如加法和减法。将下列代码复制到编辑器中。不用担心实际的实现,暂时让所有的方法返回0。
1.Calculator.java 2.package com.example.testing.testingexample; 3.public class Calculator { 4. public double sum(double a, double b){ 5. return 0; 6. } 7. public double substract(double a, double b){ 8. return 0; 9. } 10. public double divide(double a, double b){ 11. return 0; 12. } 13. public double multiply(double a, double b){ 14. return 0; 15. } 16.} |
Android Studio提供了一个快速创建测试类的方法。只需在编辑器内右键点击Calculator类的声明,选择Go to > Test,然后”Create a new test…”
在打开的对话窗口中,选择JUnit4和”setUp/@Before”,同时为所有的计算器运算生成测试方法。
这样,就会在正确的文件夹内(app/src/test/java/com/example/testing/testingexample)生成测试类框架,在框架内填入测试方法即可。下面是一个示例:
1.Calculator.java 2.package com.example.testing.testingexample; 3.import org.junit.Before; 4.import org.junit.Test; 5.import static org.junit.Assert.*; 6.public class CalculatorTest { 7. private Calculator mCalculator; 8. @Before 9. public void setUp() throws Exception { 10. mCalculator = new Calculator(); 11. } 12. @Test 13. public void testSum() throws Exception { 14. //expected: 6, sum of 1 and 5 15. assertEquals(6d, mCalculator.sum(1d, 5d), 0); 16. } 17. @Test 18. public void testSubstract() throws Exception { 19. assertEquals(1d, mCalculator.substract(5d, 4d), 0); 20. } 21. @Test 22. public void testDivide() throws Exception { 23. assertEquals(4d, mCalculator.divide(20d, 5d), 0); 24. } 25. @Test 26. public void testMultiply() throws Exception { 27. assertEquals(10d, mCalculator.multiply(2d, 5d), 0); 28. } 29.} |
请将代码复制到编辑器或者使用JUnit框架提供的断言来编写自己的测试。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。