AOSP的在$android4.2/frameworks/base/tests/WebViewTests/目录下,可用eclipse导入工程。
就几个文件。最下面的是Activity,没啥特别,就是在LinearLayout里面放了WebView。
JavaBridgeTestBase是所有TestCase的基类,继承了ActivityInstrumentationTestCase2,也就是此测试需要命令行启动,使用Anrdoid的Instrument做测试。
public class JavaBridgeTestBase extends ActivityInstrumentationTestCase2<WebViewStubActivity>
共有7个case,从文件名知,AOSP的WebViewTest主要测试JavaBridge,也就是Java和Javascript的交互。即通过WebView.addJavascriptInterface函数注入Object到js,在js里再通过此Object传出一些数据,保证数据是对的。
基本流程:
1.在UI thread对WebView注入Object,设置WebViewClient,加载网页,阻塞知道加载完成。网页是一段基本文档。
例如webView.loadData("<!DOCTYPE html><title></title>", "text/html", null);
2.加载完成后会在测试线程收到信号,然后再加载一段JS,这段js会通过注入的Object返回数据
3.判断数据是否符合预期
Chromium的在$chromium/src/android_webview/javatests/ ,同样可用eclipse导入。
util子包是工具类,提供资源(图片,文本,icon等)、js Object,js模拟点击,视频源等。
TestCase有43个:
AwTestBase是所有case的基类,同样继承ActivityInstrumentationTestCase2。与AOSP不同的是,此测试的目标是WebView的接口。从case来看,并不是完整的接口测试,大多数估计是因为出现过bug而存在,保证以后不再有bug。
基本流程:
1.UI thread设置好WebView,启动测试
2.运行测试流程,判断测试结果。结果通过assertTrue,assertFalse等Instrument的方式做判断。
举一个例子就懂了,ClearHistoryTest:
1.让WebView连续loadUrl 3次,加载不同的3个网页
2.网页后退一次,测试当前可前进(canGoForward接口返回true),可后退(canGoBack接口返回true)
3.调用clearHistory,测试当前不可前进(canGoForward接口返回false),不可后退(canGoBack接口返回false)
以上均由框架提供测试线程和UI线程的同步等待,即测试线程发出指令让UI线程执行操作后阻塞,UI线程操作完并得到结果,然后在测试线程中判断。每个接口都必须添加对应的sync函数,如HistoryUtils.goBackSync,HistoryUtils.canGoBackOnUiThread,HistoryUtils.canGoForwardOnUiThread。
其余case从类名大致能知道要测什么。
总结:4个字——怎么那么麻烦!
转载请注明出处:http://blog.csdn.net/hursing