JUnit单元测试
简介:
在我们开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得各位重要
是企业级开发的常用手段,学会JUnit可以加快应用的开发周期,可以理解为一种测试的工具吧
废话不多说,下面就介绍一下如何使用JUnit进行单元测试
建立JUnit测试的两种方法
一.直接在需要被测试的工程中新建测试类
1.先在androidManifest.xml文件中添加以下代码:
写在application标签里哦,别写错地方,写到activity中哦! <uses-library android:name="android.test.runner"/>
接着在manifest标签,application后面写上以下代码:
- <instrumentation android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.jay.junitest"
- android:label="Demo for JUnittest"/>
name那是固定写法,targetPackage是要测试的工程,既包,可以直接复制app manifest中的 package="com.jay.junitest"
label只是测试的名称,可写可不写
2.新建一个测试测试类,继承AndroidTestCase类,然后写你在类中写下你要测试的方法,比如测试一个加法的方法:testadd()就是在需要测试的方法
前加上test即可
3.点击右面的大纲视图,选择要测试的方法,右键,run as --->Android JUnit test---->稍等片刻即可,接着查看测试后的信息即可
实例演示:
注意:以下步骤是在配置好测试环境的情况下进行的,即前面的androidManifest.xml的配置
1.先创建一个需要被我们测试的类:(代码比较简单,方便理解)
demo.java:
代码:
- package com.jay.testmodel;
- public class demo {
- //这里定义一个减法函数,我们等下再测试方法中,判断返回的结果是否与我们预想的结果一样
- public int sub(int a,int b) {
- return a - b;
- }
- //这里定义一个截取字符串的方法,我们再测试类中传入一个空值,查看测试的结果
- public void subString(String string) {
- string.substring(3);
- }
- }
2.创建一个测试类
这个类要继承AndroidTestCase类
创建后,一个好的习惯是每个测试方法都抛出异常:throws Exception
代码实例:demotest.java
- package com.jay.test;
- import junit.framework.Assert;
- import com.jay.testmodel.demo;
- import android.test.AndroidTestCase;
- public class demotest extends AndroidTestCase {
- public void testsub()throws Exception{
- demo de = new demo();
- int equals = de.sub(3, 1);
- //这里用到的了断言,判断是否与我们断定给的值相等
- Assert.assertEquals(2, equals);
- }
- public void testsubString()throws Exception {
- demo de = new demo();
- de.subString(null);
- }
- }
ps:在testsub方法中我们使用到了断言,部分同学可能听过这东西,知道这个是断言,不过仅仅是知道有这东东,但是却不知道是拿来做什么的,这里科普以下:
在我们写代码的时候,我们总会习惯性地给出一些假设,断言就是在代码中捕捉这些假设,是一种布尔表达式
通常我们在测试的时候启用断言,而部署时禁用断言,程序投入运行后,最终用户在遇到问题是可以重新启用断言
---------摘抄自度娘
简单来说的话,就是我们不打算通过捕获异常来处理错误,这个时候用到断言:
Assert.assertEquals(2,equals) 这是一个断言语句
如果2 == equals的话,结果为真,程序继续执行,否则程序马上结束
这里无需纠结,简单理解成判断是否相等即可,关于断言的详细内容可自己谷歌或者度娘
3.通过大纲视图运行测试方法:
右键:
运行后稍等片刻即可:
左边会出现这个框框:
绿色表示测试通过,在代码中我们测试的时3-2是否 == 1,所以结果肯定是通过的,如果我们把assertequals()中的1改为5的话
会出现以下结果:
红色说明测试没通过,点击下面的错误项可以定位到出错的代码行
接着我们测试第二个截取字符串的方法,运行结果:同样是红色
虽然图片很多,但是真的很简单,各位读者可以按照这个流程试试,动手才是掌握知识的最快途径!!!
二.专门创建一个用于测试的工程(!!推荐,这样可以降低代码的耦合度)
流程:1.新建工程,选择new ---- > other ---->android Test Project
2.选择要测试的工程:
3.接着和第一种建立测试类的方法是一样的,这里比较简单就略过了
PS:如果使用这种方法的话,androidManifest.xml中已经自动配置好相关的参数,无需在进行配置,比较方便