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

 学android有一段时间了,最让我困惑的是项目老报错,一个Debug找半天很费时一直很苦恼。昨天晚上看了android单元测试资料。给大家分享下我学到的一点调试技巧,不要喷我。小弟刚接触android不久。首先单元测试(Junit)是由Erich Gamma和KentBeck编写的一个回归测试框架。Junit测试是程序员自己测试,即通常我们所说的白盒测试。目前版本主要分为3.x跟4.x。这里我用SAX解释XML的实例做个小测试。好了,废话不多说,直接写步骤吧。
1)首先在AndroidManifest.xml中加入下面代码: (注意你的测试类必须写在targetPackage包下面)
        
                 android:targetPackage="cn.itcast.action" android:label="Tests for My App" />
2)建立相应的xml文件,可以在本项目下面。也可以放sdCardDir中。
   


  jack
  28


  kebi
  30


  xiaoxiao
  23


3)建立service,解析xml文件(这里就不做过多的注释了,相信大家都了解)
public class SAXPersonService {
public ListgetPerson(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{
  Listpersons=null;
  Person person=null;
  String tag=null;
  public ListgetPersons(){
   return persons;
  }
  @Override
  public void startDocument() throws SAXException {
   persons=new ArrayList();
  }
  @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();
  Listpersons=service.getPerson(inStream);
  for(Person person:persons){
   Log.i(TAG, person.toString());
  }
}
}


你可能感兴趣的:(Android,android,单元测试,xml,string,attributes)