Настройте поведение библиотеки с помощью следующих аргументов инструментария. Вы можете добавить их в свою конфигурацию Gradle или применить непосредственно при запуске инструментов из командной строки. Чтобы установить эти аргументы для всех тестов Android Studio и командной строки, добавьте их в testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
Вы также можете настроить аргументы инструментирования при запуске тестов из Android Studio. Чтобы изменить аргументы, сделайте следующее:
- Отредактируйте конфигурацию запуска, нажав «Изменить» , а затем щелкнув конфигурацию.
- Отредактируйте аргументы инструментария, нажав Дополнительно по аргументам инструментария .
- Добавьте необходимый аргумент инструментирования, нажав » в разделе «Дополнительные параметры инструментария» .
Если вы запускаете макротест из командной строки, используйте -P android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Если вы вызываете команду am instrument
напрямую (что может иметь место в средах тестирования CI), передайте аргумент am instrument
с -e
:
adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner
Дополнительные сведения о настройке тестов в CI см. в разделе Бенчмаркинг в CI.
androidx.benchmark.compilation.enabled
Позволяет отключить компиляцию между каждой итерацией теста. По умолчанию целевое приложение переустанавливается и перекомпилируется между каждым тестом, чтобы учитывать CompilationMode
переданный в measureRepeated
. Отключение этого параметра позволяет вам пропустить как переустановку, так и компиляцию, если, например, вы хотите полностью скомпилировать целевое приложение один раз перед запуском набора тестов и запустить все тесты для этого полностью скомпилированного целевого приложения.
- Тип аргумента: логический
- По умолчанию:
true
androidx.benchmark.dryRunMode.enable
Позволяет запускать тесты в одном цикле, чтобы проверить, правильно ли они работают. Вы можете использовать его с регулярными тестами в рамках проверки.
- Тип аргумента: логический
- По умолчанию:
false
androidx.benchmark.enabledRules
Позволяет фильтровать прогоны только одного типа теста: создание базового профиля или тест Macrobenchmark. Также поддерживаются списки, разделенные запятыми.
- Тип аргумента : строка
- Доступные варианты:
-
Macrobenchmark
-
BaselineProfile
-
- По умолчанию: Не указано
androidx.benchmark.junit4.SideEffectRunListener
Вы можете получить противоречивые результаты тестирования, если во время выполнения теста выполняется несвязанная фоновая работа.
Чтобы отключить фоновую работу во время тестирования производительности, установите тип аргумента инструментария listener
на androidx.benchmark.junit4.SideEffectRunListener
.
- Тип аргумента: строка
- Доступные варианты:
-
androidx.benchmark.junit4.SideEffectRunListener
-
- По умолчанию: не указано
androidx.benchmark.fullTracing.enable
Включает точки трассировки androidx.tracing.perfetto
, такие как трассировка композиции Jetpack Compose.
Вам необходимо настроить свой проект так, чтобы иметь возможность захватывать трассировку композиции из тестов. Дополнительные сведения см. в разделе Захват трассировки с помощью Jetpack Macrobenchmark .
- Тип аргумента : логический
- По умолчанию :
false
androidx.benchmark.profiling.mode
Позволяет захватывать файлы трассировки во время выполнения тестов. Доступные параметры такие же, как и для библиотеки Microbenchmark — дополнительную информацию см. в описаниях в разделе «Профилирование Microbenchmark» .
- Тип аргумента: строка
- Доступные варианты:
-
MethodTracing
-
StackSampling
-
None
-
- По умолчанию:
None
androidx.benchmark.startupProfiles.enable
Позволяет отключить создание профилей запуска во время сравнительного анализа.
- Тип аргумента : логический
- По умолчанию:
true
androidx.benchmark.suppressErrors
Принимает список ошибок, разделенных запятыми, которые преобразуются в предупреждения.
- Тип аргумента : список строк.
Доступные варианты:
DEBUGGABLE
Ошибка
DEBUGGABLE
указывает на то, что целевой пакет работает сdebuggable=true
в своем манифесте, что резко снижает производительность во время выполнения для поддержки функций отладки. Чтобы избежать этой ошибки, запустите тесты сdebuggable=false
. Аргумент отладки влияет на скорость выполнения таким образом, что улучшения в тестах могут не распространяться на реальный пользовательский опыт или могут привести к снижению производительности релиза.LOW-BATTERY
Когда батарея разряжена, устройства часто снижают производительность, чтобы сэкономить заряд батареи, например, отключая большие ядра. Это происходит, даже если устройства подключены к сети. Эту ошибку можно подавлять только в том случае, если вы намеренно профилируете приложение с пониженной производительностью.
EMULATOR
Ошибка
EMULATOR
говорит о том, что тест выполняется на эмуляторе, который не соответствует реальным пользовательским устройствам. Улучшения в тестах эмулятора могут не быть перенесены на работу реального пользователя или привести к снижению реальной производительности устройства. Вместо этого вам следует использовать физическое устройство для тестирования. Подавите эту ошибку с особой осторожностью.NOT-PROFILEABLE
Целевой пакет
$packageName
работает без<profileable shell=true>
. Profileable требуется в Android 10 и 11, чтобы позволить Macrobenchmark собирать подробную информацию о трассировке целевого процесса, например разделы трассировки системы, определенные в приложении или библиотеках. Подавите эту ошибку с особой осторожностью.METHOD-TRACING-ENABLED
При запуске Macrobenchmark для тестируемого приложения включена трассировка методов. Из-за этого виртуальная машина работает медленнее, чем обычно, поэтому рассматривайте метрики из файлов трассировки только в относительном выражении — например, сравнивая скорость первого запуска со вторым. Подавление этой ошибки может привести к неточным результатам, если вы сравниваете тесты для сборок с различными вариантами трассировки методов.
По умолчанию : пустой список.
дополнительныйTestOutputDir
Настраивает, где на устройстве сохраняются отчеты об тестах JSON и результаты профилирования.
- Тип аргумента: строка пути
- По умолчанию: проверить внешний каталог APK.
Рекомендуется для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Аргументы инструментария Microbenchmark
- Создание базовых профилей
- Библиотека JankStats