如何在KitKat上基于Chromium的WebView构建和运行测试

时间:2013-12-03 08:50:58

标签: android-webview android-testing android-4.4-kitkat webviewchromium

Kitkat使用基于铬的webview和目录" external / chromium_org"包含铬代码。

目录中有针对android webview的集成测试:

"external/chromium_org/android_webview/javatests".

我在这里阅读了维基(https://code.google.com/p/chromium/wiki/AndroidTestInstructions), 我在铬源目录中顺利完成了它(不在AOSP中,只需单独下载铬)。

但是,在AOSP / external / chromium_org中,我无法构建测试包。 第一个断言错误是缺少NDK,我链接到独立的铬的NDK。 不过,它无法构建错误:

"ninja: Entering directory `out/Debug'
 ninja: error: loading 'build.ninja': No such file or directory
"

我的问题如下:

Q1:请您指出如何构建测试包并在AOSP中运行KitKat WebView的测试?

Q2:或者,我们只能在Chromium源目录中构建和运行这些测试?如果是这样,我该如何保证        测试的webview与KitKat中使用的相同?因为AndroidWebViewTest.apk的目标        是AndroidWebView.apk,而不是KitKat系统映像中的webview,它是由" AOSP / external / chromium_org"中的代码构建的。

问题3:如果我想确保KitKat Chromium webview在特定设备上运行良好,需要哪些测试用例?        目前,我想在CTS中包含android.webkit和集成测试AndroidWebViewTest.apk,将这些        足够?我是否需要利用更多测试用例?

1 个答案:

答案 0 :(得分:2)

您从AOSP / external / chromium_org获得的代码是Chromium源的剥离版本,不能用于构建和运行测试(Android CTS测试除外)。您需要做的是check out Chromium codebuild it

我使用的特定构建和调用命令是:

# Set up your environment
. build/android/envsetup.sh

# Generate the ninja files
GYP_GENERATORS="ninja" build/gyp_chromium

# Use -C out/Release for release build
ninja -C out/Debug android_webview_apk android_webview_test_apk

# Install the webview test shell
adb install out/Debug/apks/AndroidWebView.apk

# Connect a device and run tests
build/android/test_runner.py instrumentation --test-apk AndroidWebViewTest --test_data webview:android_webview/test/data/device_files

您看到的错误可能是因为您没有运行gyp来生成忍者文件,或者没有使用-C选项将正确的文件夹传递给忍者。

回答你的问题:

Q1:按上述要求 - 您无法从AOSP结账处运行Chromium检测测试。

Q2:有关运行测试的说明,请参见上文。上游Chromium代码显然比AOSP / external / chromium_org代码更新。为WebView做出贡献的方法是将补丁提交到上游Chromium代码,并等待将其包含在未来的Android版本中。将不接受针对AOSP / external / chromium_org中的代码的补丁。

不幸的是,如果您要使用Tip-Of-Tree Chromium代码替换AOSP / external / chromium_org代码,它将无法编译,因为许多必要的CL尚未进入框架/ webview。 WebView团队意识到了这一点,现在最好的办法就是在上游的Chromium树中完成所有工作。

第三季:那将是一个好的开始,是的。 Chromium项目Android机器人运行的测试比您描述的测试更多:请参阅Android TestsWebKit layout tests机器人上运行的测试。不幸的是,我不认为有可能有一个测试套件可以保证任何代码都可以在特定的硬件上运行。