一次实际的UT

发表于:2018-2-13 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Pengyue    来源:搜狗测试

  在之前总结说了一些关于UT测试的概论,之后的文章我们会从Android端的UT入手,
  一步步的剖析和总结我们经历过的问题和感想。
  一:概述
  你会学到什么
    1.更新包含JUnit和Android Testing Support Library的Gradle构建文件
    2.编写运行在本机Java虚拟机上的单元测试
    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.}
  当你同步Gradle配置时,可能需要联网下载JUnit依赖。
  四.创建第一个单元测试
  现在,万事俱备,让我们开始写第一个测试吧。首先,创建一个非常简单的被测类: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),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号