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