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

Kitkat использует веб-представление на основе хрома, а каталог "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
"

Мои вопросы перечислены ниже:

Вопрос 1: Не могли бы вы указать, как создать тестовый пакет и запустить тесты для KitKat WebView в AOSP?

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

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

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 не попал в рамки /webview. Команда WebView знает об этом, и на данный момент вам лучше всего выполнить всю работу в вышестоящем дереве Chromium.

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

Другие вопросы по тегам