Android使用单元测试框架

单元测试junit

单独测试某一个方法,看运行结果是否正常,而不需要为了测试这个方法而启动整个项目,节省时间,节省测试的成本.

1,创建一个单元测试类
需要继承类android.test.AndroidTestCase(单元测试实例)
该类中可以直接运行测试方法
这里写图片描述
在里面定义一个方法,添加一个测试
如直接运行就会报错

does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml
//没有在清单文件中指定指令集和使用的类库

这个时候就需要在清单文件加添加指令集和使用类库
打开清单文件,添加指令集(位置与application是同级结点)

    <instrumentation 
        android:name="android.test.InstrumentationTestRunner"
        //指定该测试框架要测试的项目名称
        android:targetPackage="com.gigi.junit"
        ></instrumentation>

在application里面添加使用类库(与activity是同级结点)

<uses-library android:name="android.test.runner"/>

这样写完后该测试框架就可以跑起来了
运行弹出junit窗口
这里写图片描述
右上角如果是绿条说明运行成功,没有bug,如果是红条说明有bug

2,实际开发中不是把方法直接写在单元测试类中的,而是要新建一个工具类,把方法写在里面,如

public class Units {

    public static int add(int i, int j){
        return i + j;
    }
}

然后在单元测试类中调用该方法
再调用断言(用来检测实际值与期望值是否一致)

assertEquals(expected, actual);

public class TestCase extends AndroidTestCase {
    public void test(){
        int result = Utils.add(3, 7);
        //断言:用来检测实际值与期望值是否一致
        assertEquals(10, result);
    }
}

测试结果:
这里写图片描述
错误可以根据failure trace里面的内容定位bug位置

如果要测试的方法没有返回值断言就没有用了,这时可以测试业务逻辑是否正常,会不会有bug
例如在工具类中定义没有返回值的方法:

    public static void devide(int i, int j){
        int result = i / j;
    }

在单元测试类中调用该方法

    public void test2(){
        Utils.devide(2, 0);
    }

测试结果:
这里写图片描述
failure trace可指明bug类型及定位bug位置

3,测试框架初始化完毕之后,测试方法执行之前,此方法先调用
这里写图片描述
重写setup方法,可在你测试的方法之前执行,可将做全局变量的初始化。

    protected void setUp() throws Exception {

        super.setUp();
    }

4,tearDown方法测试方法执行之后调用

        protected void tearDown() throws Exception {

            super.tearDown();
        }

注:setUp与tearDown方法常常用于优化测试代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值