Тест Mockito + Dexmaker дает сбой при запуске на Android < 4.4

У меня есть несколько android-тестов, которые сильно рушатся при запуске на версиях Android под 4.4 / Kitkat.

Это библиотеки, которые у меня есть в моем build.gradle

androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'com.google.dexmaker:dexmaker:1.1'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.1'

Тесты выполняются так же, как и ожидалось на Android версии 4.4, хотя мне нужно было добавить несколько подсказок, чтобы сказать Dexmaker, где разместить свой кэш:

System.setProperty("dexmaker.dexcache", getInstrumentation().getContext().getCacheDir().getPath());

Вот вывод logcat с устройства:

D/dalvikvm( 1712): GC_FOR_ALLOC освободил 479K, 19% - 2532K/3124K, приостановлено 3 мс, всего 3 мс dalvikvm( 1712): GC_CONCURRENT освобожден 311K, 16% свободен 2686K/3188K, приостановлен 3ms+0ms, всего 4 мс D/dalvikvm( 1712): GC_FOR_ALLOC освобожден 127K, 11% свободен 2852K/3188K, приостановлен 1 мс, всего 1msvm / dval 1712): GC_FOR_ALLOC освободил 123K, 7% свободных 3239K/3476K, приостановлено 4ms, всего 4 мс D/dalvikvm( 1712): GC_CONCURRENT освобождено 53K, 6% свободных 3276K/3476K, приостановлено 2 мс + 0 мс, всего 10 мс D / далвиквм ( 1712): DexOpt: --- BEGIN 'Generated-1815896169.jar' (bootstrap=0) ---
D/dalvikvm( 1728): DexOpt: загрузить 1 мс, проверить +opt 0 мс, 82180 байт D/dalvikvm( 1712): DexOpt: --- END 'Generated-1815896169.jar' (успех) ---
D/dalvikvm( 1712): подготовка к DEX '/data/data/my.app.identifier/cache/Generated-1815896169.jar': распаковать в 0 мс, переписать 15 мс I/dalvikvm( 1712): DexOpt: недопустимый доступ к методу (вызов Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/l анг / Объект; из LBackendAddressServiceImpl_Proxy;)
I/dalvikvm( 1712): не удалось найти метод my.app.identifier.backend.BackendAddressServiceImpl.internalClone, на который ссылается метод BackendAddressServiceImpl_Proxy.internalClm: не разрешено 17 виртуальных литов: два типа: преобразование виртуальной машины в логический уровень: невозможно: виртуальная переменная типа 17: не разрешена; /app/identifier/backend/BackendAddressServiceImpl;.internalClone (Ljava / lang / Cloneable;) Ljava / lang / Object; D /dalvikvm( 1712): VFY: замена кода операции 0x6f на 0x0019
I/dalvikvm( 1712): DexOpt: недопустимый доступ к методу (вызов Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object; от LBackendAddressServiceImpl_Proxy;)
I/dalvikvm( 1712): не удалось найти метод my.app.identifier.backend.BackendAddressServiceImpl.internalClone, ссылочных от метода BackendAddressServiceImpl_Proxy.super$internalClone$java_lang_Object Вт / dalvikvm (1712) VFY: не в состоянии resoldlve виртуальный Метод 50: Lmy/app/identifier/backend/BackendAddressServiceImpl;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object;
D/dalvikvm( 1712): VFY: замена кода операции 0x6f на 0x0000
D/dalvikvm( 1712): GC_FOR_ALLOC освобожден 652K, свободен на 20% 3138K/3904K, приостановлен на 4 мс, всего 4 мс D/dalvikvm( 1712): DexOpt: --- BEG 'Generated1066861752.jar' (bootstrap=0) ---
D/dalvikvm( 1712): GC_CONCURRENT освобождено 44K, 21% свободно 3103K/3904K, приостановлено 0 мс +1 мс, всего 2 мс D/dalvikvm( 1729): DexOpt: нагрузка 0 мс, проверить +opt 0 мс, 81004 байта D/dalvikvm( 1712): DexOpt: --- END 'Generated1066861752.jar' (успех) ---
D/dalvikvm( 1712): DEX prep '/data/data/my.app.identifier/cache/Generated1066861752.jar': разархивировать в 0 мс, переписать 13 мс I/dalvikvm( 1712): DexOpt: доступ к недопустимому методу (вызов Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object; из LAppConfigServiceImpl_Proxy;)
I/dalvikvm( 1712): Не удалось найти метод my.app.identifier.config.AppConfigServiceImpl.internalClone, на который ссылается метод AppConfigServiceImpl_Proxy.internalClone
W / dalvikv 17: неспособный: LMY / приложение / идентификатор / конфигурации / AppConfi gServiceImpl;.internalClone (Ljava / lang / Cloneable;) Ljava / lang / Object; D /dalvikvm( 1712): VFY: замена кода операции 0x6f на 0x0019
I/dalvikvm( 1712): DexOpt: недопустимый доступ к методу (вызов Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object; из LAppConfigServiceImpl_Proxy;)
I/dalvikvm( 1712): не удалось найти метод my.app.identifier.config.AppConfigServiceImpl.internalClone, на который ссылается метод AppConfigServiceImpl_Proxy.super$internalClone$java_migable_vol_WN: не может быть найден Метод 17: Lmy / app / identifier / config / AppConfigServiceImpl;.internalClone (Ljava / lang / Cloneable;) Ljava / lang / Object; D /dalvikvm( 1712): VFY: замена кода операции 0x6f на 0x0000
D/dalvikvm( 1712): GC_CONCURRENT освобожден 536K, 22% свободен 3078K/3904K, приостановлен 1 мс +1 мс, всего 7 мс D / dalvikvm (1712_F_C_DUR_MS_CURS_MS_CMS_CMS) / dalvikvm (1712): GC_FOR_ALLOC освободил 492K, 21% свободен 3098K/3904K, приостановлен 2 мс, всего 2 мс D/dalvikvm( 1712): GC_FOR_ALLOC освобожден 468K, 20% свободен 3142K/3904K, приостановлен 2 мс, всего 2 мс D / dalvik): GC_CONCURRENT освобожден 247K, 19% свободен 3174K/3904K, приостановлен 2 мс + 0 мс, всего 4 мс F/libc    ( 1712): фатальный сигнал 11 (SIGSEGV) при 0x00000000 (код =1), поток 1725 (ationTestRunner)
I/DEBUG   (  109): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (  109): Отпечаток сборки: 'generic/vbox86p/vbox86p:4.2.2/JDQ39E/eng.buildbot.20140523.235904:userdebug/test-keys'
I/DEBUG   (  109): Редакция: '0'
I/DEBUG   (  109): pid: 1712, tid: 1725, имя: ationTestRunner  >>> my.app.identifier 
I/DEBUG   (  109): 
I/DEBUG   (  109): стек:
I/DEBUG   (  109):          98c5bba0  00000000  
I/DEBUG   (  109):          98c5bba4  00000000  
I/DEBUG   (  109):          98c5bba8  00000000  
I/DEBUG   (  109):          98c5bbac  00000000  
I/DEBUG   (  109):          98c5bbb0  00000000  
I/DEBUG   (  109):          98c5bbb4  00000000  
I/DEBUG   (  109):          98c5bbb8  00000000  
I/DEBUG5 (109) 98cb I/DEBUG   (  109):          98c5bbc0  00000000  
I/DEBUG   (  109):          98c5bbc4  00000000  
I/DEBUG   (  109):          98c5bbc8  00000000  
I/DEBUG   (  109):          98c5bbcc  00000000  
I/DEBUG   (  109):          98c5bbd0  00000000  
I):          98c5bbd4  00000000  
I/DEBUG   (  109):          98c5bbd8  00000000  
I/DEBUG   (  109):          98c5bbdc  00000000  
I/DEBUG   (  109):     #00  98c5bbe0  a652fb68  /dev/ashmem/dalvik-heap (удалено) I / DEBUG 109 (удалено):          98c5bbe4  a6487fe8  /dev/ashmem/dalvik-heap (удалено)
I/DEBUG   (  109):          98c5bbe8  a647f1c0  /dev/ashmem/dalvik-heap (удалено)
I/DEBUG   (  109):          98c5bbec  b66af3d1  /system/lib/lib.so (dvmRemoveFromReferenceTable(ReferenceTable*, Object**, Object*)+33)
I/DEBUG   (  109):          98c5bbf0  b6752ca0  /system/lib/libdvm.so
I/DEBUG   (  109):          98c5bbf4  b6751ff4  /system/lib/libdm. поэтому I/DEBUG   (  109):          98c5bbf8  00000000  
I/DEBUG   (  109):          98c5bbfc  b66b3fd4  /system/lib/libdvm.so (dvmThreadSelf()+36)
I/DEBUG   (  109):          98c5bc00  00000007  
I/DEBUG   (  109):          98c5bc04  a652fc08  /dev/ashmem/dalvik-heap (удалено)
I/DEBUG   (  109):          98c5bc08  a647f198  /dev/ashme dalvik-heap (удалено)
I/DEBUG   (  109):          98c5bc0c  b6751ff4  /system/lib/libdvm.so
I/DEBUG   (  109):          98c5bc10  b7d30a28  [куча]
I/DEBUG   (  109):          98c5bc14  a647f180  /dev/asme ash -heap (удалено)
I/DEBUG   (  109):          98c5bc18  98c5bcb8  [стек:1725]
I/DEBUG   (  109):          98c5bc1c  b66ba5b7  /system/lib/libdvm.so (dvmReleaseTrackedAlloc+71)
I/DEBUG   (  109):          ........  ........
I/DEBUG   (  109):     #01  98c5bcc0  b7d30a28  [куча]
I/DEBUG   (  109):          98c5bcc4  00000000  
I/DEBUG   (  109):          98c5bcc8  00000000  
I/DEBUG   (  109):          98c5bccc  00000000  
I/DEBUG   (  109):          98c5bcd0  00000000  
I/DEBUG   (  109):          98c5bcd4  b6751ff4  /system/lib/libdvm.so
I/DEBUG   (  109):          98c5bcd8  b7d30a28  [куча] I / DEB 98c5bcdc  b665bd72  /system/lib/libdvm.so (dvmInterpret(Thread*, метод const*, JValue*)+178)
I/DEBUG   (  109):          98c5bce0  b7d30a28  [куча]
I/DEBUG   (  109):          98c5bce4  0000 (  109):          98c5bce8  b7596339  /system/lib/libc.so (pthread_mutex_lock+9)
I/DEBUG   (  109):          98c5bcec  b761eff4  /system/lib/libc.so
I/DEBUG   (  109):          98c5bcf0  b7cf4e98  [куча]
I/DEBUG   (  109):          98c5bcf4  00000018  
I/DEBUG   (  109):          98c5bcf8  b7cf4e68  [куча]
I/DEBUG   (  109):          98c5bcfc  b7596509  /system/lib/libc.so (pthread_mutex_unlock+25)
I/DEBUG   (  109):          ........  ........
I/DEBUG   (  109):     #02  b7d30a30  9f27f620  /dev/ashmem/dalvik-LinearAlloc (удалено)
I/DEBUG   (  109):          b7d30a34  9eee8000  /dev/ashmem/dalvik-aux- структура (удалено)
I/DEBUG   (  109):          b7d30a38  a647f180  /dev/ashmem/dalvik-heap (удалено)
I/DEBUG   (  109):          b7d30a3c  00000000  
I/DEBUG   (  109):          b7d30a40  98c5bc70  [стек:1725]
I/DEBUG   (  109):          b7d30a44  00000000  
I/DEBUG   (  109):          b7d30a48  98c5bd1c  [стек:1725]
I/DEBUG   (  109):          b7d30a4c  0000000a  
I/DEBUG   (  109):          b7d30a50  00000000  
I/DEBUG   (  109): система b7d30a54 b56 lib / libdvm.so I / DEBUG (109): b7d30a58 00000000 I / DEBUG (109): b7d30a5c 00000000 I / DEBUG (109): b7d30a60 9edb6670  /system/framework/ext.jar
I/DEBUG   (  109):          b7d30a64  98c5c300  
I/DEBUG   (  109):          b7d30a68  00000000  
I/DEBUG   (  109):          b7d30a6c  00000000  
D/AndroidRuntime( 1704): завершение работы VM
I/ActivityManager(  464): процесс my.app.identifier (pid 1712) умер.
W/ActivityManager(  464): сбой приложения my.app.identifier, запущенного инструментария ComponentInfo{my.app.identifier.test/android.test.InstrumentationTestRunner}
D/dalvikvm( 1704): GC_CONCURRENT освобожден 100 КБ, 19% свободен 462 КБ /568 КБ, пауза 0 мс + 0 мс, всего 2 мс D/jdwp    ( 1704): получен сигнал пробуждения, выход из режима выбора D / dalvikvm (1704): отладчик отключен; В реестре объектов 1 запись I / ActivityManager (464): Пакет принудительной остановки my.app.identifier appid=10048 user=0
D/Zygote  (  198): Процесс 1712 прерван по сигналу (11)
W/ThrottleService(  464): невозможно найти статистику для iface rmnet0

Есть ли намеки на запуск Mockito / Dexmaker на "старых" версиях android?

1 ответ

Решение

Я не на 100 %, если это было сделано (или что-то еще, что мы изменили за это время), но с Dexmaker 1.2 это, кажется, исправлено.

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