android图文报告生成,【原创】android 测试生成 html 报告

之前写过一个关于怎样生成 html 的东西,当时是通过 java 代码去解析生成的 xml 然后再拼装成 html,感觉那个方法不是很好,太繁琐,后来看到 java 可以利用 ant 来生成 html,于是就试了一下。虽然很不愿意去看 ant 的资料,在各位大神严厉的不严厉的批评下还是硬着头皮大致过了一遍,觉得实现方法比较低端就没写贴,看到今天有小伙伴需要就贴一下,献个丑。

如下为 build.xml 的片断

但是问题来了,在 android 代码的 build.xml 文件中通过来执行测试程序总会报 Stub!

TestAll:

[mkdir] Created dir: E:\git-temp\junit

[junit] Exception inthread "main" java.lang.RuntimeException: Stub!

[junit] at junit.framework.TestResult.(TestResult.java:4)

[junit] at org.apache.tools.ant.taskdefs.optional.junit.IgnoredTestResult.(IgnoredTestResult.java:41)

[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:356)

[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1179)

[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1030)

查了一下

c12bd8a7923c08e302e0affb7045d288.png

可能不是这个原因,知道原因的还请不吝赐教。

于是决定不用来执行测试程序。换成执行命令行的方式继续配合来执行,是通过 XSL 将 xml 自动转换成 xml,它会自动生成一个 TESTS-TestSuites.xml,它是所有测试结果的一个汇总,html 文件夹中的 index.xml 就是根据它来显示的。

可以先看一下效果,不嫌丑的可以继续往下看 (这么丑的东西,大神就先闭眼略过吧

1f604.svg)

因为执行速度慢,我只跑了一个包,没有跑全部

4e62dcf32539a7e25e01edf712c170c2.png

fc831c1bbc3586b3cba224c09224ef76.png

在 jenkins 上用 publish html report 把路径选么 html 就可以实现报告展示。

接下来上代码,边讲边上,由于很少写东西,看不明白的继续问就好。

build.xml

message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."

unless="sdk.dir"

/>

expression="/manifest/@package" output="tested.package"/>

Running tests...

Downloading XML test report...

为习惯性伸手党们考虑,把 properties 文件也贴一下吧,虽然这种伸手习惯不太好,但慢慢消化变成自己的就好

ant.properties

tested.project.dir=../ktplay_testing_internal

junit.report.dir=../ktplay_testing_internal

jar.libs=${junit.report.dir}/libs

junit.output.dir=junit-report

test.runner=com.ktplay.testing.PolideaInstrumentationTestRunner

teste.package=com.ktplay.sample

src.dir=src

tested.package=com.ktplay.testing.internal

至于 build.xml 文件我都在重要的地方加了注释,看起来应该不难。

紧接着问题又来了,test.runner 里边的类是哪儿来的?为什么要用它?

1.从哪儿来

这个类是我从https://code.google.com/p/the-missing-android-xml-junit-test-runner/

这个 jar 需要自己改一下,链接里对使用方法也有讲述,也可以找到源码,我在源码的基础上自己小小改动了一下,

之所以要改是因为它生成的 xml 会自己包一个根节点,导致我生成的汇总 TESTS-TestSuites.xml 总是 0kb,去掉就好了,还有一个原因是它生成的报告是写系统文件放入 data/dta/com.xxx.xxx./files/,如果我连没有 root 的手机则无法写入。改完的代码就不发了,大家可以自行下载,根据自己需要去修改。

2.为什么要用它

我试过 junit-report.jar 包,但通过 XSL 总是不能把它生成的 xml 报告转换出来,我觉得可能还是节点名什么的不对应,具体内部实现我也不清楚。

但 PolideaInstrumentationTestRunner 这个类确解决了这一点。

至此重要的环节已经贴完,开始让它跑起来吧。。

可能有些地方写的不是很明白,也不太好,如果哪儿写的不正确还请各位大神指摘点评,像我一相的菜鸟可以尽情提问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 应用中实现复制图文的功能,可以使用 Android 的 ClipboardManager 类。以下是一个示例代码: ```java // 获取系统的 ClipboardManager ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); // 创建一个包含文本和图片的 ClipData 对象 ClipData clip = ClipData.newHtmlText("label", "text", "<img src='image_url'/>"); // 将 ClipData 对象复制到系统剪贴板 clipboard.setPrimaryClip(clip); ``` 在上面的代码中,我们首先获取系统的 ClipboardManager 对象,然后创建一个包含文本和图片的 ClipData 对象。其中,`newHtmlText` 方法用于创建一个包含 HTML 格式文本和图片的 ClipData 对象,第一个参数是标签,可以随意指定,第二个参数是文本内容,第三个参数是包含图片的 HTML 标签。最后,我们将 ClipData 对象复制到系统剪贴板。 当用户想要粘贴复制的内容时,可以调用 ClipboardManager 的 `getPrimaryClip` 方法获取剪贴板中的 ClipData 对象,然后从中取出文本和图片。以下是一个示例代码: ```java // 获取系统的 ClipboardManager ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); // 获取剪贴板中的 ClipData 对象 ClipData clip = clipboard.getPrimaryClip(); // 取出 ClipData 中的文本和图片 String text = clip.getItemAt(0).getText().toString(); String html = clip.getItemAt(0).getHtmlText(); ``` 在上面的代码中,我们首先获取系统的 ClipboardManager 对象,然后调用 `getPrimaryClip` 方法获取剪贴板中的 ClipData 对象。最后,我们从 ClipData 对象中取出文本和图片,其中 `getItemAt(0)` 方法用于获取第一个 ClipData.Item 对象,`getText` 方法用于获取文本内容,`getHtmlText` 方法用于获取包含图片的 HTML 标签。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值