Как создавать и запускать тесты для WebView на основе Chromium на KitKat

Kitkat использует веб-просмотр на основе хрома, а каталог «external/chromium_org» содержит код хрома.

В каталоге есть интеграционные тесты для веб-просмотра Android:

"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: Не могли бы вы указать, как собрать тестовый пакет и запустить тесты для KitKat WebView в AOSP?

Q2: Или мы можем собрать и запустить эти тесты только в исходном каталоге Chromium? Если да, то как я могу гарантировать, что протестированный веб-просмотр совпадает с тем, который используется в KitKat? Поскольку целью AndroidWebViewTest.apk является AndroidWebView.apk, а не веб-просмотр в системном образе KitKat, который создан из кода в «AOSP/external/chromium_org».

Q3: Если я хочу убедиться, что веб-просмотр KitKat Chromium хорошо работает на конкретном устройстве, какие тестовые примеры необходимы? В настоящее время я хочу включить android.webkit в CTS и интеграционный тест AndroidWebViewTest.apk, будет ли этого достаточно? Нужно ли использовать больше тестовых случаев?


person user3060569    schedule 03.12.2013    source источник


Ответы (1)


Код, который вы получаете из AOSP/external/chromium_org, представляет собой урезанную версию исходного кода Chromium и не может использоваться для создания и запуска тестов (кроме тестов Android CTS). Что вам нужно сделать, так это попробовать Chromium код и создайте его.

Конкретные команды сборки и вызова, которые я использую:

# 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: Как указано выше, вы не можете запускать инструментальные тесты Chromium из окна проверки AOSP.

Q2: Инструкции по запуску тестов см. выше. Исходный код Chromium явно новее, чем код AOSP/external/chromium_org. Чтобы внести свой вклад в WebView, нужно отправить свой патч в вышестоящий код Chromium и дождаться его включения в будущую версию Android. Патчи для кода в AOSP/external/chromium_org не принимаются.

К сожалению, если вы замените код AOSP/external/chromium_org кодом Tip-Of-Tree Chromium, он не скомпилируется, поскольку ряд необходимых CL не попал в frameworks/webview. Команда WebView знает об этом, и на данный момент вам лучше всего выполнять всю свою работу в вышестоящем дереве Chromium.

Q3: Это было бы хорошим началом, да. Android-боты проекта Chromium выполняют больше тестов, чем те, которые вы описали: посмотрите те, которые выполняются на Тесты Android и тесты компоновки WebKit ботов. К сожалению, я не думаю, что возможно иметь набор тестов, который дает вам гарантию, что любой код будет работать на конкретном оборудовании.

person marcin.kosiba    schedule 09.12.2013