AOSP和Chromium的Android WebViewTest

简介: AOSP的在$android4.2/frameworks/base/tests/WebViewTests/目录下,可用eclipse导入工程。 就几个文件。

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个:

  • AndroidScrollIntegrationTest.java
  • AndroidViewIntegrationTest.java
  • ArchiveTest.java
  • AwContentsClientAutoLoginTest.java
  • AwContentsClientFaviconTest.java
  • AwContentsClientFullScreenVideoTest.java
  • AwContentsClientGetDefaultVideoPosterTest.java
  • AwContentsClientGetVideoLoadingProgressViewTest.java
  • AwContentsClientOnFormResubmissionTest.java
  • AwContentsClientOnScaleChangedTest.java
  • AwContentsClientShouldInterceptRequestTest.java
  • AwContentsClientShouldOverrideUrlLoadingTest.java
  • AwContentsClientVisitedHistoryTest.java
  • AwContentsRenderTest.java
  • AwContentsTest.java
  • AwLayoutSizerTest.java
  • AwQuotaManagerBridgeTest.java
  • AwScrollOffsetManagerTest.java
  • AwSettingsTest.java
  • AwTestBase.java
  • AwViewportTest.java
  • AwZoomTest.java
  • ClearHistoryTest.java
  • ClientAddMessageToConsoleTest.java
  • ClientOnPageFinishedTest.java
  • ClientOnReceivedErrorTest.java
  • ContentViewMiscTest.java
  • CookieManagerStartupTest.java
  • CookieManagerTest.java
  • FullScreenVideoTestAwContentsClient.java
  • GeolocationTest.java
  • GetTitleTest.java
  • HttpAuthDatabaseTest.java
  • LoadDataWithBaseUrlTest.java
  • LoadUrlTest.java
  • NavigationHistoryTest.java
  • SaveRestoreStateTest.java
  • StandaloneAwQuotaManagerBridgeTest.java
  • TestAwContentsClient.java
  • UserAgentTest.java
  • WebKitHitTestTest.java
  • WebViewAsynchronousFindApisTest.java
  • WebViewFindApisTestBase.java
  • WebViewModalDialogOverrideTest.java

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

目录
相关文章
|
Android开发 数据安全/隐私保护
Android Studio 打包APK(详细版)
Android Studio 打包APK(详细版)
2015 0
Android Studio 打包APK(详细版)
|
Android开发 C++
【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(二)
【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(二)
1474 0
【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(二)
|
编译器 Android开发 C++
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
134 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
|
Android开发
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
146 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
|
Android开发 C++
【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(一)
【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(一)
222 0
【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(一)
|
图形学 Android开发 网络协议
UNITY&ANDROID真机调试
adb是androidSDK的一个工具,位置就在sdk目录下的platform-tools文件夹下。通过adb,不仅可以查看在Unity中自己设定的打印信息,包括系统信息和异常都能获取到。1.启动adb1.确保手机和电脑在一个局域网下。
3502 0
|
安全 Java 开发工具
android中ndk的开发
前言(其实是吐槽) 这是我看(android应用安全防护和逆向分析)遇到的第一个坑了,在章节2.1和2.2里,虽然作者很贴心的给了步骤教你如何搭建ndk的开发环境,但是,我要说的是,如果按照作者在2.1.2的五个步骤按部就班的来,你绝对!不可能!完成! 主要的原因我就不再分析了,大约就是少了一堆乱七八糟的说明和步骤,这里我重新写一遍ndk开发相关。
1196 0