您的位置:首页 > 移动开发 > Android开发

Android Assets之测试xml解析方法

2014-12-30 10:59 183 查看


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来测试,因为我们不需要关注数据类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: