在android中进行单元测试

上一篇 / 下一篇  2012-09-04 09:30:37 / 个人分类:单元测试

+@K(@ D%b8M0o0  在开发过程中,无论是什么语言,如果能够熟练使用单元测试, 提高的效率那是大大地,当测试或某相关的小姑娘报bug的时候,站在你身边,用无辜的大眼睛对 你说,“公子,有地方出问题”,正要打开相关的应用程序或者页面重现那个问题时,你大臂一挥,“XJ,不用那么麻烦,看在下的”,打开单元测试一跑,三下 两下搞定问题,那些连myeclipse都不知道怎么拼的MM,看到这一幕,能不五体投地吗?如果公司都是大老爷们,那首先要做的就和老板提意见,然后再 看下文。51Testing软件测试网"]#[1y^!B

51Testing软件测试网F} S tCb|V(p

  android的单元测试很简单,首先,新建一个android project。然后新建一个androidtestproject,File-->Project-->Android-->Android Test Project。然后会弹出一个对话框“New Android Test Project”,填入工程名,在“an existing Android Project”中选择要单元测试的工程,其实就和那个东西挂钩,理解为母体和寄生虫的关系也未尝不可。当选择好Android Project工程之 后,下面的那些包名之类的自然就自动填好了。点“finish”,一个android test project就OK了--如果不是太倒霉的话。51Testing软件测试网dE[&?i@Aw

51Testing软件测试网:_#N Do%N

   android test project工程下的目录结构和android project差不多,只是src下的package下多一个test包。接下来就开始创建junit了,像平常添加新类那样右击 包,New-->Junit Test Case,接下来就填junit名字,选择“New Junit3.0 Test”,Junit4.0没试过,但由于某些原因Junit4不一定能体现出Junit的特性来,一会说,现在不说,伏笔很重要,我的地盘我做 主...在下面吧setUp勾上。“finish”,现在就可以写测试

%xv B4H#H yih0sb(t051Testing软件测试网j4?c-g~V

  代码,具体的实例代码如下:51Testing软件测试网(Eu:Om};\W|{

5Z6x2L Q|MH|0importjava.util.ArrayList;51Testing软件测试网 h pi]%L)^X
import java.util.HashMap;51Testing软件测试网+R*_(p3zxA
import java.util.List;
s8~L&x5D!U[ t'kP R a0import java.util.Map;
51Testing软件测试网 U ~G0r pEce

51Testing软件测试网gffX5RZ:pLW

import com.helloAndroid.Books;
2N"isR(]HA'I0import com.helloAndroid.HelloAndroid;
0I:AO8P7QG4NzM0import com.helloAndroid.R;
51Testing软件测试网o @({1tX6q[ke;@6O

r#Aa.N#D HC'_0import android.R.xml;51Testing软件测试网B u.u }B)K%fz@.Rq
import android.test.ActivityInstrumentationTestCase2;
Ph9KJ QD ?(U0import android.widget.ListView;51Testing软件测试网/l8b'YQ_+p?6p
import android.widget.SimpleAdapter;
51Testing软件测试网[Ol7U [

51Testing软件测试网&Y M A*Jh4~

51Testing软件测试网u)| cICy
public class Junit3 extends ActivityInstrumentationTestCase2<Books> {
51Testing软件测试网OD8igA.ds

51Testing软件测试网_t6cm&I:pAA

ListView listView;51Testing软件测试网V#Im&LYU5WE f)_
Books books;
51Testing软件测试网Put^j5Nq+y

51Testing软件测试网.c\ZnF\

public Junit3() {
fB;aa d c-N0super("com.helloAndroid.HelloAndroid" ,Books.class);
6Yz#?vC6C0// TODO Auto-generated constructor stub
VNq)|nID0}

&s&Y_;D S,Z6VPBo5z0

7y(f/\ vT$[0protected void setUp() throws Exception {51Testing软件测试网\}-Q(p,y M9~3PO,k*{ Q
super.setUp();
Q Bq+R%Z0books = this.getActivity();
51Testing软件测试网#lf,Q;rODI%atM

51Testing软件测试网C?bY9{y"p)y

51Testing软件测试网+jY \JL^(['j
}

#k9m!Z+d*y9@051Testing软件测试网s#wE]L,]&X!i

//添加testPreconditions()方法,检查初始化环境,只执行一次51Testing软件测试网*p+wF'] } lt
public void testPreconditions() {
51Testing软件测试网U9wM\ @CO

xT1gZ&lHl0      //assertNotNull(integer);51Testing软件测试网o#x$p,o`

@r'KBPS#i9L0}

h wDB p$N5B:x051Testing软件测试网q\g:I,@6|!sn

//添加单元测试
3jb{%JXyz:Q0public void testText() {

cD2E|a#s)Mrm051Testing软件测试网 Q5B:~r8u5e+H W

      //assertEquals(resourceString,(String)mView.getText());51Testing软件测试网.M7v!R`6p)dA6`q5I
List<Map<String, Object>> resourceName = new ArrayList<Map<String,Object>>();
5^q X6{1tbBE*\a^0Map<String ,Object> map = new HashMap<String, Object>();

-ep.m*wl/n0c6S/eX c051Testing软件测试网HHmB?$E iG

map.put("line1", "测试Junit");51Testing软件测试网S _&w1D(UP*iHt
map.put("img", R.drawable.weikexue);51Testing软件测试网wG;V7u#x?
resourceName.add(map);

?AG"UpJ0T!I0

2uxeF)`*Q7pW"E:O0//listView = (ListView)books.findViewById(com.helloAndroid.R.id.l)51Testing软件测试网T~7F)ur~0Wm
SimpleAdapter notes = new SimpleAdapter(
7r7`?ZZh d`0books,51Testing软件测试网!co6R}5sy]
resourceName,51Testing软件测试网)vNP\QE1\f&?+P\
R.layout.rows,51Testing软件测试网bL,x@/U;A9h's
new String[]{"line1" ,"img"},
l4T ^^+T0new int[]{R.id.text1,  R.id.img});
51Testing软件测试网1@tV hSl EcY

51Testing软件测试网/~m^Uf'b+VeV

//books.setListAdapter(notes);51Testing软件测试网y1jnc:YU$O ^
    }
51Testing软件测试网%gdK6p|

JtMD*yA#g+F0}

{J H[4p&oXh0

N3|!ga4C,Cvp2k0   必须继承这个类ActivityInstrumentationTestCase2,通过泛型把要单元测试的目标类联系起 来,ActivityInstrumentationTestCase2<Books>,Books就是目标类,setUp() 方法是自动生成,因为刚才在创建的时间把“setUp()”的选项卡勾上了,如果没勾上的话,就重写一个,然后写两个方法 testPreconditions()和testText(),testText是单元测试的执行类,testPreconditions()不知道具 体干嘛的,千万切记要把这三个方法都写出来,否则报出来的错,你去google都搜不到解决方法。由于必须得有这三个类,而Junit4里是通过 annotation的方式标注测试的行为,android test project中用junit4可能会达不到预期效果,没测试过,反正在junit里少那三个方法,也是不行的,这是实践过的。

3P%D%@gVP)?0

MT `6|:R\8qYv0  最简单的单元测试就这样了。android的单元测试也是有一个很大的框架,ActivityInstrumentationTestCase2上面也继承了好多层。

!D1pU&@v `/y,\M m Q0

TAG:

 

评分:0

我来说两句

Open Toolbar