Intereting Posts
Инициативная firebase с FirebaseOptions Parse Json для студии String android Массив из ImageButtons, назначьте R.view.id из переменной Невозможно изменить зависимости конфигурации (после включения моментального запуска) Как отправить изображение (растровое изображение) на сервер в android с данными из нескольких форм json Как я могу обрабатывать изменение ориентации, чтобы Фрагмент не загружался? Iframe не изменяет размер на android 2.3.6 Android Place Picker закрывается сразу после запуска Android, как EditText работает как автозаполнение R.string.value отображается как число Intellij Idea 13 не может найти инструменты иерархии при программировании приложений для Android Ограничить количество ключей API Карт Google, связанных с данным отпечатком SHA-1 (то есть отладочным хранилищем)? GCM с PHP (облачные сообщения Google) Подключение к парному Bluetooth-устройству (BluetoothSocket) в Android 2.1 Размер значка уведомлений в Android

Можно ли узнать, работает ли приложение Android как часть контрольно-измерительного теста

Есть ли проверка времени выполнения приложения, чтобы узнать, работает ли она как часть контрольно-измерительного теста?

Предыстория: наше приложение выполняет синхронизацию базы данных при запуске. Но это должно происходить только при регулярном запуске. Это особенно мешает тестированию приборов, проверяющим синхронизацию db. Не удивительно.

И со всеми другими тестами это просто отходы от циклов процессора.

Solutions Collecting From Web of "Можно ли узнать, работает ли приложение Android как часть контрольно-измерительного теста"

Если вы используете ActivityUnitTestCase, вы можете установить собственный объект приложения с помощью setApplication и иметь флаг для включения или выключения синхронизации базы данных? Пример использования пользовательского объекта приложения в моем блоге:

http://www.paulbutcher.com/2011/03/mock-objects-on-android-with-borachio-part-3/

Начиная с уровня API 11, доступен метод ActivityManager.isRunningInTestHarness () . Это может сделать то, что вы хотите.

Более простым решением является проверка класса, который будет присутствовать только в тестовом пути, работает с JUnit 4 (в отличие от решения с использованием ActivityUnitTestCase) и не требует отправки пользовательских намерений в ваши действия / службы (которые могут даже не быть Возможно в некоторых случаях)

 private boolean isTesting() { try { Class.forName("com.company.SomeTestClass"); return true; } catch (ClassNotFoundException e) { return false; } } 

Вы можете передать намерение дополнительно к своей деятельности, указав, что оно находится под тестом.

1) В своем тесте пройдите «testMode» дополнительно к вашей деятельности:

 public void setUp() throws Exception { super.setUp(); Intent activityIntent = new Intent(); activityIntent.putExtra("testMode", true); setActivityIntent(activityIntent); } 

2) В вашей деятельности проверьте testMode:

 Bundle extras = getIntent().getExtras(); if (extras != null && extras.getBoolean("testMode")) { // disable your database sync } 

Эта работа для меня, потому что никакое реальное устройство не работает

 public static boolean isUnitTest() { return Build.BRAND.startsWith(Build.UNKNOWN) && Build.DEVICE.startsWith(Build.UNKNOWN) && Build.DEVICE.startsWith(Build.UNKNOWN) && Build.PRODUCT.startsWith(Build.UNKNOWN); }