Robotium:利用InstrumentationTestRunner和XmlSerializer导出xml报告到手机里
上一篇 /
下一篇 2014-06-19 16:16:47
/ 个人分类:robotium
用Robotium有一段时间了,下面说一下,利用这个框架把报告导入手机里,因为项目要求不能用Eclipse,只能用adb命令实现,可以先用开发工具生成测试工程的apk,安装到手机里,直接用命令运行,再用命令把报告pull到pc端就OK了,最好再集成到Hudson上面,就能获得更好的客户体验了,Robotium的知识不再所说,看到这篇文章的基本都懂吧,Robotium框架是不会自动生成报告到手机里的,所以要修改一下InstrumentationTestRunner类,这是单元测试的基础吧,在测试工程了新建一个InstrumentationTestRunner类,具体代码如下:
- package com.example.demo.instrumentation;
- import android.os.Bundle;
- import android.os.Environment;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.Writer;
- import java.text.SimpleDateFormat;
- import java.util.Date;
-
- import org.xmlpull.v1.XmlPullParserFactory;
- import org.xmlpull.v1.XmlSerializer;
-
- public class InstrumentationTestRunner extends
- android.test.InstrumentationTestRunner {
- private Writer mWriter;
- private XmlSerializer mTestSuiteSerializer;
- private long mTestStarted;
-
- public void onStart() {
- try {
- Date d = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-kk-mm");
- String strTime = sdf.format(d);
- String xmlName = "Test" + strTime + ".xml";
-
-
-
-
-
-
-
-
-
-
-
- startJUnitOutput(new FileWriter(new File(getTargetContext()
- .getFilesDir(), xmlName)));
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- super.onStart();
- }
-
- void startJUnitOutput(Writer writer) {
- try {
- this.mWriter = writer;
- this.mTestSuiteSerializer = newSerializer(this.mWriter);
- this.mTestSuiteSerializer.startDocument(null, null);
- this.mTestSuiteSerializer.startTag(null, "testsuites");
- this.mTestSuiteSerializer.startTag(null, "testsuite");
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- private XmlSerializer newSerializer(Writer writer) {
- try {
- XmlPullParserFactory pf = XmlPullParserFactory.newInstance();
- XmlSerializer serializer = pf.newSerializer();
- serializer.setOutput(writer);
- return serializer;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- }
-
- public void sendStatus(int resultCode, Bundle results) {
- super.sendStatus(resultCode, results);
- switch (resultCode) {
- case -2:
- case -1:
- case 0:
- try {
- recordTestResult(resultCode, results);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
-
- case 1:
- recordTestStart(results);
- }
- }
-
- void recordTestStart(Bundle results) {
- this.mTestStarted = System.currentTimeMillis();
- }
-
- void recordTestResult(int resultCode, Bundle results) throws
收藏
举报
TAG: