转Eclipse IDE Android Test Projec

上一篇 / 下一篇  2013-01-22 11:57:47 / 个人分类:android junit

Eclipse IDE Android Test Project

因为我是测试出身,刚转来做手机开发,写了几天代码,所以这几天总是蠢蠢欲动的想写的东西,考虑都老本行,所以决定写一篇如何做Android 单元测试,下来就开始我的第一个Android的测试工程:

  1. 一些资源:
    1. Google的开发文档,不过要翻墙才能看的到,不过有很多地方都可以下载到离线的包。
    2. 剩下的就是Android的开发环境,请参考开发文档自己配置。
  2. 下面先建立一个Android的工程,里面按照正常的开发过程实现一些功能, 我有一个工程里面实现的Android联系的一些操作,因为我也需要验证我的这些操作是否真正的有效,开始我是在界面上添加了一个测试按钮,将一些调用方法写在这个按钮里,每测试完一个功能就把这个按钮里面的实现删掉,再写新的代码,这样做十分不方便,也破坏了原有的软件“功能”,反正都要测试,为什么不写真正的测试代码呢?而且写测试代码也是我的老本行,下面就开始真正的测试代码:
    1. 新建一个Test工程:点击菜单“File->New->Project”,然后选择Android Test Project如图1然后填入测试工程的名称,选择被测试的工程,就建好测试工程了。
    2. 建好测试工程后,可以看到测试工程的结构的一般的开发工程是差不多的,然后在测试工程的包下面新建一个JUnit Test Case, 写好测试案例的名称2这里我们选择New JUnit 3 Test, setUp()和tearDown()也打上勾,当然你也不打勾,后面直接在测试代码里写上就是了。
    3. 新建立的测试类是基于TestCase类的,但是我们测试过程中要用到软件的一些“功能”,所以我们要做一点点的修改如下:
      1: 
      2:publicclassTestPersonCantactextendsActivityInstrumentationTestCase2<MainActivity> {
      3: 
      4:privateContext ctx;
      5: 
      6:publicTestPersonCantact(String pkg, Class<WebShare> activityClass) {
      7:super("com.android.contaxt", WebShare.class);
      8:// TODO Auto-generated constructor stub
      9:}
      10: 
      11:publicTestPersonCantact() {
      12:super("com.android.contact", WebShare.class);
      13:}
      14: 
      15:protectedvoidsetUp()throwsException {
      16:super.setUp();
      17:ctx = getActivity();
      18: 
      19:}
      20: 
      21:protectedvoidtearDown()throwsException {
      22:super.tearDown();
      23:}
    4. 这里就完成了测试案例的准备工作了,记得这两个构造函数要写对了,不然会有问题。接下来就开始写我们的测试案例了,因为是第一次用JUnit, 发现它测试案例和Python的有点像,函数名格式为testXXXX()就可以了,而在Gtest里面是用一个宏来表示的,好了写一个方法如:
1:publicvoidtestDeletePersonContact()throwsNoIdException {
2:ContactsHelperhelper =newContactsHelper(ctx);
3:PersonContact ne = PersonContact
4:.newPersonContact("TestPersonContact@gmail.com");
5:PersonName name = PersonName.newPersonName("FirstName","LastName",
6:null, null, null);
7:TelephoneNumber tel = TelephoneNumber.newTelephoneNumber("123123123",
8:3, null);
9:TelephoneNumber tel2 = TelephoneNumber.newTelephoneNumber("1231231230",
10:1, null);
11: 
12:one.name = name;
13:one.addTelephoneNumber(tel);
14:one.addTelephoneNumber(tel2);
15: 
16://... Email, ...
17:try{
18:helper.add(testGuy);
19:}catch(RemoteException e) {
20:// TODO Auto-generated catch block
21:e.printStackTrace();
22:}catch(OperationApplicationException e) {
23:// TODO Auto-generated catch block
24:e.printStackTrace();
25:}
26: 
27:PersonContact pc = helper.getPersonContactById(one.id);
28: 
29:try{
30:helper.delete(pc);
31:}catch(RemoteException e) {
32:// TODO Auto-generated catch block
33:e.printStackTrace();
34:}catch(OperationApplicationException e) {
35:// TODO Auto-generated catch block
36:e.printStackTrace();
37:}
38:
39:PersonContact pc1 = helper.getPersonContactById(pc.id);
40:this.assertEquals("telephoneNumbers after Delete Count Is:"+ pc1.telephoneNumbers.size(), pc1.telephoneNumbers.size(), 0);
41:// ...
42:}

JUnit也提供了很多assertEquals, assertTrue之类的方法,可以让我们很快的完成测试案例代码的实现,我一口气写几个看看运行效果如下:

3看着一道美丽的绿条,心里真是开心哈。

 

建立大家在写代码的时候,也养成写测试代码的习惯,可以把自己写的很多零散的测试代码很好的组织、归档,别人看了你的测试代码后就知道你的接口怎么调用,根本不用你再为别人讲一次这个接口需要如何如何用?这样不是很好么^_^

 原文:http://www.cnblogs.com/GnagWang/archive/2010/12/16/1908710.html


TAG:

引用 删除 maliya1314   /   2013-03-22 11:31:48
1
引用 删除 maliya1314   /   2013-03-22 11:31:42
觉得写的是操作步骤 觉得写步骤之前可以将具体的方法和目的先简要说下 免得看步骤看半天不知道在讲什么
 

评分:0

我来说两句

Open Toolbar