亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Android中Junit測試、XML的序列化與解析
作者:網絡轉載 發布時間:[ 2016/5/9 11:00:22 ] 推薦標簽:單元測試 Android

  一、關于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());
}
}
/**
* 寫xml文件到本地
*/
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;
}

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 中日一级片 | 小视频黄 | 一区二区三区中文国产亚洲 | 操极品| 欧美性猛交xxxxxxxx软件 | 免费国产不卡午夜福在线 | 手机看片欧美日韩 | 综合网久久 | 国产精品免费大片一区二区 | 狠狠色综合网站久久久久久久 | 一级黄色录像免费观看 | 欧美激情精品久久久久久不卡 | 2015www小明永久免费 | 青青青青青青草 | 小明永久播放平台领域2015 | 欧美精品一区在线看 | 国产欧美日韩视频在线观看 | 亚洲欧美网址 | 亚洲欧美精品 | 曰本一区二区 | 亚洲精品高清在线 | 欧美成人性色xxxxx视频大 | 自拍 亚洲 欧美 另类 动漫 | 黄色爱爱网站 | 欧美成人免费全网站大片 | 视频二区在线 | 性刺激的欧美三级视频 | 色综合天天综合网国产成人 | a亚洲欧美中文日韩在线v日本 | 色婷婷99综合久久久精品 | 首页 国产 日韩 欧美 动漫 | 爽爽窝窝午夜精品一区二区 | 狠狠色狠狠色综合日日小蛇 | 高清一级做a爱过程不卡视频 | 一级毛片黄色 | 国产成人在线免费观看 | 成人特黄午夜性a一级毛片 成人网18免费软件 成人网免费 | 一级免费片 | 国产精品免费视频一区 | 一区二区三区四区视频在线 | 999视频在线播放777 |