android studio使用单元测试

单元测试的作用

在Android开发中,如果对一个简单的功能,每次修改代码都重新运行到设备中进行测试,会浪费大量时间,降低开发工作效率。如果使用单元测试,编写单元测试类,执行测试单元测试类就可以对某些功能进行测试,大大提升了开发工作效率。

单元测试框架的引入

  testImplementation 'junit:junit:4.12'
  androidTestImplementation 'com.android.support.test:runner:1.0.2'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

一般默认studio在你创建项目的时候,就已经引入了

  • testImplementation-引入的依赖是java unit单元测试,是运行在当前电脑的jvm上的单元测试;
  • androidTestImplementation-引入的依赖是Android单元测试,是运行在Android环境的单元测试。

目录结构

目录结构截图

  • androidTest/java(Android单元测试,运行在当前电脑的jvm上的单元测试,执行测试的时候需要Android连接设备,速度比较慢,适合需要调用Android api的单元测试)
  • test/java(JUnit单元测试,用来放不需要Android依赖的单元测试类,运行在当前电脑的jvm上的单元测试,速度快,适合只是对java代码功能进行单元测试)

代码展示

先编写一个计算类

public class Calculator {
    public double sum(double a, double b){
        return a+b;
    }

    public double substract(double a, double b){
        return a-b;
    }

    public double divide(double a, double b){
        return a/b;
    }

    public double multiply(double a, double b){
        return a*b;
    }
}

可以右键点击自动生成一个test类
自动生成
可以选择新建一个Test类
在上面自动生成类的基础上,补充好自己的测试代码

public class CalculatorTest {
    private Calculator mCalculator;
    @Before  //一般在这里做初始化的代码,这里是创建计算类的对象
    public void setUp() throws Exception {
        mCalculator = new Calculator();
    }

    @Test
    public void sum() throws Exception {
        assertEquals(6d, mCalculator.sum(1d, 5d), 0);  //进行具体的单元测试
    }

    @Test
    public void substract() throws Exception {
        assertEquals(2d, mCalculator.substract(5d, 4d), 0);
    }

    @Test
    public void divide() throws Exception {
        assertEquals(3d, mCalculator.divide(20d, 5d), 1);
    }

    @Test
    public void multiply() throws Exception {
        assertEquals(12d, mCalculator.multiply(2d, 5d), 1);
    }
}

然后可以右键点击,运行测试文件整体类,或者单独在方法上右键点击测试某个方法,
测试结果如下:
测试结果
测试成功的,为绿色,失败的为黄色,会告诉你具体的失败原因;
在加减乘除方法调用assertEquals()方法,来计算测试结果,第一个参数,需要填入正确结果,第二个参数为我们的方法调用,第三个参数为允许误差值

单元测试的断言

断言种类
断言种类2

这篇笔记只是大致描述一下单元测试,具体单元测试的详尽写法,可以参考
Android开发进阶:从小工到专家 这本书

单元测试是很强的一个功能,当需要测试某一条件数值时程序的计算结果,就完全可以使用单元测试,比如开发过的区块链项目中,关于订单计算时候,当时为了计算两个数值的运算,每次手动去修改bean对象的数值,再编译运行,太耗费时间了,如果当时有重点了解过单元测试,编写一个测试用例,保守估计提高20倍的效率,单元测试很值得重视!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值