在android中进行单元测试

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

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

.Wt?6[T t051Testing软件测试网BcJG"B,S&`

  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软件测试网+n6l(z1C,H_.s+ED2i

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

TvT|wJJ%T;L| R&F0

rz} h-e.Z8K0  代码,具体的实例代码如下:51Testing软件测试网U g Dm AJz

1^O PtU:V#dN0importjava.util.ArrayList;51Testing软件测试网PV~Hh8i
import java.util.HashMap;
L3^ r.{'nioJ0import java.util.List;51Testing软件测试网g(Q"h$DxM"h+ya7L
import java.util.Map;

A&{%tJV051Testing软件测试网G-p$@f(S-?u)r

import com.helloAndroid.Books;51Testing软件测试网.\(d*x`2l
import com.helloAndroid.HelloAndroid;
/f9\/FA n[o3T0import com.helloAndroid.R;

0e7}j-]/~![+a0

;QA ytm ew)B0import android.R.xml;51Testing软件测试网z9MP h3`!z7Qf?"{
import android.test.ActivityInstrumentationTestCase2;51Testing软件测试网|0z~B.bW@i0wy
import android.widget.ListView;
$@&g"YV1T.l/L*V(q&z0import android.widget.SimpleAdapter;

*^&D z0Swi)n!K3_051Testing软件测试网`3a\7_"i5s \ M

51Testing软件测试网*q:]"kV\j0M?&kU/x
public class Junit3 extends ActivityInstrumentationTestCase2<Books> {

9n~]%@&~3_@051Testing软件测试网&E`8~1j4g;GP

ListView listView;51Testing软件测试网l/c9W-kW$C0E/PK
Books books;

d3f6}[+Yc0

E~"^7r a z t#}IH6j1P0public Junit3() {
%M)K m3EIW~0super("com.helloAndroid.HelloAndroid" ,Books.class);
v*f ?~OC Iw5k0// TODO Auto-generated constructor stub51Testing软件测试网8`.f,I4v)RKX*u
}

7e1aw/]4Gt-DT0

I0u+T*Tt"gLc0protected void setUp() throws Exception {
[^8ThE5S0super.setUp();51Testing软件测试网.h#C"a8@Y~
books = this.getActivity();
51Testing软件测试网:Y+g R K2?7ch

51Testing软件测试网#lm&}v3B)Jl

51Testing软件测试网+` E.v ^%d4o
}
51Testing软件测试网%qW fE1V }'a1t

51Testing软件测试网-ald Ao

//添加testPreconditions()方法,检查初始化环境,只执行一次51Testing软件测试网6m;k+c%o+z7K
public void testPreconditions() {

'n&e-olTf9} S*r0

e!U [uzC,}Y@Xy4Ps0      //assertNotNull(integer);

9r{u)Ot/QK051Testing软件测试网Zifj b{.Z k

}

#}1C9NO W${R E051Testing软件测试网8lD8?2g S ] g/hA

//添加单元测试
}#U?v vpb,D)v0public void testText() {

(jFoq G,[7\ ?K0

%w W:@o8m*i0      //assertEquals(resourceString,(String)mView.getText());51Testing软件测试网(L[)m-@u{3d
List<Map<String, Object>> resourceName = new ArrayList<Map<String,Object>>();
ZwgGV ppa0Map<String ,Object> map = new HashMap<String, Object>();

9L3CR2F"Qe051Testing软件测试网 O3n-x#KzY

map.put("line1", "测试Junit");
\-qV5\0gx}0map.put("img", R.drawable.weikexue);
a?;O p1q*Q!R0resourceName.add(map);
51Testing软件测试网5m%NS A Hwux

p{S sZO0//listView = (ListView)books.findViewById(com.helloAndroid.R.id.l)51Testing软件测试网0OK Y4h O?
SimpleAdapter notes = new SimpleAdapter(51Testing软件测试网mdKDm2H^Y J
books,51Testing软件测试网ps7x"~H)V]
resourceName,51Testing软件测试网2iCmB5K a,p
R.layout.rows,51Testing软件测试网M&` [-U3Pv
new String[]{"line1" ,"img"},
a"]6we$K0o P0new int[]{R.id.text1,  R.id.img});
51Testing软件测试网~2w.~1rc.[$`kbO

,z9CBJ1|^@4Llr0//books.setListAdapter(notes);51Testing软件测试网lL7Q1Q?
    }

8d)oG;J3~ N%G0

5CT2f1^ P0}51Testing软件测试网 {8? ^H_ tre

51Testing软件测试网#C`5}v/mcXI^J

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

51Testing软件测试网*ZY)Q$RFd8O^

  最简单的单元测试就这样了。android的单元测试也是有一个很大的框架,ActivityInstrumentationTestCase2上面也继承了好多层。

&k\;DO.`0

TAG:

 

评分:0

我来说两句

Open Toolbar