Robotium:利用InstrumentationTestRunner和XmlSerializer导出xml报告到手机里

上一篇 / 下一篇  2014-06-19 16:16:47 / 个人分类:robotium

用Robotium有一段时间了,下面说一下,利用这个框架把报告导入手机里,因为项目要求不能用Eclipse,只能用adb命令实现,可以先用开发工具生成测试工程的apk,安装到手机里,直接用命令运行,再用命令把报告pull到pc端就OK了,最好再集成到Hudson上面,就能获得更好的客户体验了,Robotium的知识不再所说,看到这篇文章的基本都懂吧,Robotium框架是不会自动生成报告到手机里的,所以要修改一下InstrumentationTestRunner类,这是单元测试的基础吧,在测试工程了新建一个InstrumentationTestRunner类,具体代码如下:

  1. package com.example.demo.instrumentation;
  2. import android.os.Bundle;  
  3. import android.os.Environment;  
  4. import java.io.File;  
  5. import java.io.FileWriter;  
  6. import java.io.IOException;  
  7. import java.io.Writer;  
  8. import java.text.SimpleDateFormat;  
  9. import java.util.Date;  
  10.   
  11. import org.xmlpull.v1.XmlPullParserFactory;  
  12. import org.xmlpull.v1.XmlSerializer;  
  13.   
  14. public class InstrumentationTestRunner extends  
  15.         android.test.InstrumentationTestRunner {  
  16.     private Writer mWriter;  
  17.     private XmlSerializer mTestSuiteSerializer;  
  18.     private long mTestStarted;  
  19.   
  20.     public void onStart() {  
  21.         try {  
  22.             Date d = new Date();  
  23.             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-kk-mm");  
  24.             String strTime = sdf.format(d);  
  25.             String xmlName = "Test" + strTime + ".xml";  
  26.             // 如果被测的应用本身有读写sdcard权限的话级可以直接放在sdcard里面,否则机会失败,  
  27.             // 有测试应用源码的情况下是可以在AndroidManifest.xml里添加权限,当然所数情况下是没有源码的,  
  28.             // 只能放在被测应用的files目录里了,这个是不需要权限的  
  29.             // String SDPath = Environment.getExternalStorageDirectory() + "/";  
  30.             // String logPath = SDPath + "TestLog/";  
  31.             // File file = new File(logPath);  
  32.             // if (file.exists()) {  
  33.             // } else {  
  34.             // file.mkdirs();  
  35.             // }  
  36.             // startJUnitOutput(new FileWriter(new File(file, xmlName)));  
  37.             startJUnitOutput(new FileWriter(new File(getTargetContext()  
  38.                     .getFilesDir(), xmlName)));  
  39.         } catch (IOException e) {  
  40.             throw new RuntimeException(e);  
  41.         }  
  42.         super.onStart();  
  43.     }  
  44.   
  45.     void startJUnitOutput(Writer writer) {  
  46.         try {  
  47.             this.mWriter = writer;  
  48.             this.mTestSuiteSerializer = newSerializer(this.mWriter);  
  49.             this.mTestSuiteSerializer.startDocument(nullnull);  
  50.             this.mTestSuiteSerializer.startTag(null"testsuites");  
  51.             this.mTestSuiteSerializer.startTag(null"testsuite");  
  52.         } catch (Exception e) {  
  53.             throw new RuntimeException(e);  
  54.         }  
  55.     }  
  56.   
  57.     private XmlSerializer newSerializer(Writer writer) {  
  58.         try {  
  59.             XmlPullParserFactory pf = XmlPullParserFactory.newInstance();  
  60.             XmlSerializer serializer = pf.newSerializer();  
  61.             serializer.setOutput(writer);  
  62.             return serializer;  
  63.         } catch (Exception e) {  
  64.             throw new RuntimeException(e);  
  65.         }  
  66.   
  67.     }  
  68.   
  69.     public void sendStatus(int resultCode, Bundle results) {  
  70.         super.sendStatus(resultCode, results);  
  71.         switch (resultCode) {  
  72.         case -2:  
  73.         case -1:  
  74.         case 0:  
  75.             try {  
  76.                 recordTestResult(resultCode, results);  
  77.             } catch (IOException e) {  
  78.                 throw new RuntimeException(e);  
  79.             }  
  80.   
  81.         case 1:  
  82.             recordTestStart(results);  
  83.         }  
  84.     }  
  85.   
  86.     void recordTestStart(Bundle results) {  
  87.         this.mTestStarted = System.currentTimeMillis();  
  88.     }  
  89.   
  90.     void recordTestResult(int resultCode, Bundle results) throws

TAG:

 

评分:0

我来说两句

Open Toolbar