返回顶部
首页 > 资讯 > 移动开发 >Android中Junit测试、XML的序列化与解析
  • 760
分享到

Android中Junit测试、XML的序列化与解析

XMLjunit序列化Android 2022-06-06 13:06:40 760人浏览 八月长安
摘要

  一、关于Junit测试   首先需要在manifest.xml中配置,在manifest节点下指定以下信息其中targetPacketage是你想要测试的项目的包名

  一、关于Junit测试   首先需要在manifest.xml中配置,在manifest节点下指定以下信息其中targetPacketage是你想要测试的项目的包名 <!--     指定测试信息和要测试的包 --> <instrumentation Android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.itheima28.junittest" > </instrumentation> 在application节点下加入 <!--         指定引用的测试包 --> <uses-library android:name="android.test.runner" /> 使用时直接继承AndroidTestCase即可 public class TestCase extends AndroidTestCase { public void test() { 。。。。 } }   二、使用XmlSerializer类序列化XML   XmlSerializer主要是以数据流的形式序列化XML而它是一个接口无法直接实例化,需要通过一个静态方法Xml.newSerializer获取对象   下面是一些常用的方法   startDocument(String,boolean):第一个参数设置文档的编码格式,第二个参数设置是否是一个独立的文档,一般设置为true。   endDocument():标记XML文档的结束,XML文档标签均为成对出现,有始有终。   startTag(String,String):一个XML标签的开始,第一个参数为命名空间,一般为null即可,第二个参数为标签名。   endTag(String,String):一个XML标签的结束,第一个参数为命名空间,一般为null即可,第二个参数为标签名,有始有终。   attribute(String,String,String):设置一个标签的属性,第一个参数为命名空间,第二个参数是属性名,第三个参数为属性值。   text(String/...):设置标签的值   下面是一个实例 public class TestCase extends AndroidTestCase { public void test() { //        writeXmlToLocal(); List<Person> personList = parserXmlFromLocal(); for (Person person : personList) { Log.i("TestCase", person.toString()); } } private void writeXmlToLocal() { List<Person> personList = getPersonList(); // 获得序列化对象 XmlSerializer serializer = Xml.newSerializer(); try { File path = new File(Environment.getExternalStorageDirectory(), "persons.xml"); FileOutputStream fos = new FileOutputStream(path); // 指定序列化对象输出的位置和编码 serializer.setOutput(fos, "utf-8"); serializer.startDocument("utf-8", true);    // 写开始 <?xml version='1.0' encoding='utf-8' standalone='yes' ?> serializer.startTag(null, "persons");        // <persons> for (Person person : personList) { // 开始写人 serializer.startTag(null, "person");    // <person> serializer.attribute(null, "id", String.valueOf(person.getId())); // 写名字 serializer.startTag(null, "name");        // <name> serializer.text(person.getName()); serializer.endTag(null, "name");        // </name> // 写年龄 serializer.startTag(null, "age");        // <age> serializer.text(String.valueOf(person.getAge())); serializer.endTag(null, "age");        // </age> serializer.endTag(null, "person");    // </person> } serializer.endTag(null, "persons");            // </persons> serializer.endDocument();        // 结束 } catch (Exception e) { e.printStackTrace(); } } private List<Person> getPersonList() { List<Person> personList = new ArrayList<Person>(); for (int i = 0; i < 30; i++) { personList.add(new Person(i, "wang" + i, 18 + i)); } return personList; } }   三、使用pull解析XML   PULL解析器的运行方式和SAX解析器很相似,都是事件触发机制。如开始元素和结束元素,使用parser.next()可以进行下一个元素并触发相应的事件,事件作为代码被发送,返回值是数字,因此可以用一个switch语句来对事件进行选择,然后进行相应的处理,当开始解析元素的时候,调用parser.nextText()方法可以获得下一个Text类型的元素。   常用属性 START_DOCUMENT START_TAG TEXT END_TAG END_DOCUMENT private List<Person> parserXmlFromLocal() { try { File path = new File(Environment.getExternalStorageDirectory(), "persons.xml"); FileInputStream fis = new FileInputStream(path); // 获得pull解析器对象 XmlPullParser parser = Xml.newPullParser(); // 指定解析的文件和编码格式 parser.setInput(fis, "utf-8"); int eventType = parser.getEventType();         // 获得事件类型 List<Person> personList = null; Person person = null; String id; while(eventType != XmlPullParser.END_DOCUMENT) { String tagName = parser.getName();    // 获得当前节点的名称 switch (eventType) { case XmlPullParser.START_TAG: // 当前等于开始节点  <person> if("persons".equals(tagName)) {    // <persons> personList = new ArrayList<Person>(); } else if("person".equals(tagName)) { // <person id="1"> person = new Person(); id = parser.getAttributeValue(null, "id"); person.setId(Integer.valueOf(id)); } else if("name".equals(tagName)) { // <name> person.setName(parser.nextText()); } else if("age".equals(tagName)) { // <age> person.setAge(Integer.parseInt(parser.nextText())); } break; case XmlPullParser.END_TAG:        // </persons> if("person".equals(tagName)) { // 需要把上面设置好值的person对象添加到集合中 personList.add(person); } break; default: break; } eventType = parser.next();        // 获得下一个事件类型 } return personList; } catch (Exception e) { e.printStackTrace(); } return null; }


--结束END--

本文标题: Android中Junit测试、XML的序列化与解析

本文链接: https://lsjlt.com/news/28837.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作