您的位置:首页 > 移动开发 > Android开发

Android 使用 Junit进行单元测试

2014-03-24 11:02 246 查看
JUnit单元测试


简介:

在我们开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得各位重要

是企业级开发的常用手段,学会JUnit可以加快应用的开发周期,可以理解为一种测试的工具吧





废话不多说,下面就介绍一下如何使用JUnit进行单元测试


建立JUnit测试的两种方法

一.直接在需要被测试的工程中新建测试类

1.先在androidManifest.xml文件中添加以下代码:

写在application标签里哦,别写错地方,写到activity中哦! <uses-library android:name="android.test.runner"/>

接着在manifest标签,application后面写上以下代码:

[html] view
plaincopy





<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:



代码:

[java] view
plaincopy





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

[java] view
plaincopy





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中已经自动配置好相关的参数,无需在进行配置,比较方便
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: