关于android单元测试结合SAX解析xml文件初步分析

 学android有一段时间了,最让我困惑的是项目老报错,一个Debug找半天很费时一直很苦恼。昨天晚上看了android单元测试资料。给大家分享下我学到的一点调试技巧,不要喷我。小弟刚接触android不久。首先单元测试(Junit)是由Erich Gamma和KentBeck编写的一个回归测试框架。Junit测试是程序员自己测试,即通常我们所说的白盒测试。目前版本主要分为3.x跟4.x。这里我用SAX解释XML的实例做个小测试。好了,废话不多说,直接写步骤吧。
1)首先在AndroidManifest.xml中加入下面代码: (注意你的测试类必须写在targetPackage包下面)
        <uses-library android:name="android.test.runner" />
        <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="cn.itcast.action" android:label="Tests for My App" />
2)建立相应的xml文件,可以在本项目下面。也可以放sdCardDir中。
    <?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
  <name>jack</name>
  <age>28</age>
</person>
<person id="20">
  <name>kebi</name>
  <age>30</age>
</person>
<person id="21">
  <name>xiaoxiao</name>
  <age>23</age>
</person>
</persons>
3)建立service,解析xml文件(这里就不做过多的注释了,相信大家都了解)
public class SAXPersonService {
public List<Person>getPerson(InputStream instream) throws Exception{
  SAXParserFactory factory=SAXParserFactory.newInstance();
  SAXParser perser=factory.newSAXParser();
  PersonHandler handler=new PersonHandler();
  perser.parse(instream,handler);
  return handler.getPersons();
}
public final class PersonHandler extends DefaultHandler{
  List<Person>persons=null;
  Person person=null;
  String tag=null;
  public List<Person>getPersons(){
   return persons;
  }
  @Override
  public void startDocument() throws SAXException {
   persons=new ArrayList<Person>();
  }
  @Override
  public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
   if("person".equals(localName)){
    person=new Person();
    person.setId(new Integer(attributes.getValue(0)));
   }
   tag=localName;
  }
  @Override
  public void characters(char[] ch, int start, int length)
    throws SAXException {
   if(tag!=null){
    String date=new String(ch,start,length);
    if("name".equals(tag)){
     person.setName(date);
    }else if("age".equals(tag)){
     person.setAge(new Short(date));
    }
   }
  }
  @Override
  public void endElement(String uri, String localName, String qName)
    throws SAXException {
   if("person".equals(localName)){
    persons.add(person);
    person=null;
   }
   tag=null;
  }
}
4)进行单元测试(这里需要注意几点,1.测试类必须继承AndroidTestCase,2.方法名必须以test开头。)
public class PersonServiceTest extends AndroidTestCase {
private static final String TAG = "PersonServiceTest";
public void testSAXgetPersons() throws Throwable{
  InputStream inStream=this.getClass().getClassLoader().getResourceAsStream("person.xml");
  SAXPersonService service=new SAXPersonService();
  List<Person>persons=service.getPerson(inStream);
  for(Person person:persons){
   Log.i(TAG, person.toString());
  }
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值