Android Assets之测试xml解析方法

来源:互联网 发布:使用数组公式计算乘积 编辑:程序博客网 时间:2024/06/07 07:21

Android Assets之测试xml解析方法

 背景
        App离不开与Server的网络交互,目前应用与服务器之间交互大多采用xml或者json的格式。本文可用作ut,测试客户端能否正确解析xml或json。当然你也可以模拟http return,不过如单纯为了测试解析方法或得到解析的数据可直接使用Assets。当然我们得预先准备好数据,至于Assets本文就不详细介绍,感兴趣的可以看下SDK的注解。
        照例从代码开始讲解,以下代码主要实现Xml的解析:
    public class ParserExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public String parseXml(InputStream xml) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput(new InputStreamReader(xml));
int eventType = parser.getEventType();
StringBuilder sb = new StringBuilder();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.TEXT) {
sb.append(parser.getText());
}
eventType = parser.next();
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
        这种xml解析实现的方法很多,后面的测试则是为了测试parseXml方法是否正确。
public class XMLParserTests extends ActivityInstrumentationTestCase2<ParserExampleActivity>{
private TextView tv;
public XMLParserTests() {
super(ParserExampleActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
Thread.sleep(5000);
super.tearDown();
}
@UiThreadTest
public final void testParserXml(){
ParserExampleActivity mActivity = getActivity();
tv = (TextView) mActivity.findViewById(R.id.textview01);
String result = null;
try {
InputStream myxml = getInstrumentation().getContext().getAssets().open(“myxml.xml”);
result = mActivity.parseXml(myxml);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(result);
assertNotNull(result);
tv.setText(result);
}
}
        此处我为什么在UiThread运行,是因为加了这行代码tv.setText(result)。测试程序解析完xml,会把内容显示到一个TextView。 这里继承的是ActivityInstrumentationTestCase2,具体可以根据被测代码的情况来区别继承什么类型测试。内容很少,代码很多,大家细细消化一下。无论数据类型是什么,都可以使用Assets来测试,因为我们不需要关注数据类型。
0 0
原创粉丝点击