Mockito не может издеваться над этим классом: class android.car.CarAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Mockito не может издеваться над этим классом: class android.car.Car

Сообщение Anonymous »

Мои модульные тесты с Mockito выдают следующую ошибку:
Mockito не может имитировать этот класс: class android.car.Car.
Если вы Не знаете, почему вы получаете эту ошибку, откройте проблему на GitHub.
Java: 17
Название поставщика JVM: JetBrains s.r.o.
JVM Версия поставщика: 17.0.10+0-17.0.10b1087.21-11609105
Имя JVM: 64-битная серверная виртуальная машина OpenJDK
Версия JVM: 17.0.10+0-17.0.10b1087.21-11609105Информация о JVM: смешанный режим
Имя ОС: Linux
Версия ОС: 6.8.0-49-generic
Вы видите этот отказ от ответственности, поскольку Mockito настроен на создание встроенных макетов.
Вы о встроенных макетах и ​​их ограничениях можно узнать в пункте №39 javadoc класса Mockito.

Код: Выделить всё

Underlying exception : org.mockito.exceptions.base.MockitoException: Cannot instrument class android.car.Car because it or one of its supertypes could not be initialized
org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class android.car.Car.

If you're not sure why you're getting this error, please open an issue on GitHub.

Java : 17
JVM vendor name : JetBrains s.r.o.
JVM vendor version : 17.0.10+0-17.0.10b1087.21-11609105
JVM name : OpenJDK 64-Bit Server VM
JVM version : 17.0.10+0-17.0.10b1087.21-11609105
JVM info : mixed mode
OS name : Linux
OS version : 6.8.0-49-generic

You are seeing this disclaimer because Mockito is configured to create inlined mocks.
You can learn about inline mocks and their limitations under item #39 of the Mockito class javadoc.

Underlying exception : org.mockito.exceptions.base.MockitoException: Cannot instrument class android.car.Car because it or one of its supertypes could not be initialized
at BaseViewModelTests.setup(BaseViewModelTests.kt:26)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
at app//org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at app//org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at app//org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at app//org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
at app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at app//org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:489)
at app//org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$2(SandboxTestRunner.java:291)
at app//org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:104)
at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at [email protected]/java.lang.Thread.run(Thread.java:840)
Caused by: org.mockito.exceptions.base.MockitoException: Cannot instrument class android.car.Car because it or one of its supertypes could not be initialized
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:168)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:399)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:190)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:410)
...  18 more
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.robolectric.internal.bytecode.ShadowWrangler.classInitializing(ShadowWrangler.java:164)
at org.robolectric.internal.bytecode.RobolectricInternals.classInitializing(RobolectricInternals.java:21)
at android.car.Car.(Car.java)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.assureInitialization(InlineBytecodeGenerator.java:236)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:261)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClass(InlineBytecodeGenerator.java:218)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.lambda$mockClass$0(TypeCachingBytecodeGenerator.java:78)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:168)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:399)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:190)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:410)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:75)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMockType(InlineDelegateByteBuddyMockMaker.java:427)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.doCreateMock(InlineDelegateByteBuddyMockMaker.java:386)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMock(InlineDelegateByteBuddyMockMaker.java:365)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMock(InlineByteBuddyMockMaker.java:56)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:99)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:84)
at org.mockito.Mockito.mock(Mockito.java:2162)
at org.mockito.Mockito.mock(Mockito.java:2077)
... 18 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.robolectric.internal.bytecode.RobolectricInternals.performStaticInitialization(RobolectricInternals.java:53)
at org.robolectric.internal.bytecode.ShadowWrangler.classInitializing(ShadowWrangler.java:161)
...  39 more
Caused by: java.lang.IllegalArgumentException: key.length > 31
at android.os.SystemProperties.getInt(SystemProperties.java:77)
at android.car.Car.staticInitializer(Car.java:141)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.robolectric.internal.bytecode.RobolectricInternals.performStaticInitialization(RobolectricInternals.java:53)
at org.robolectric.internal.bytecode.ShadowWrangler.classInitializing(ShadowWrangler.java:161)
at org.robolectric.internal.bytecode.RobolectricInternals.classInitializing(RobolectricInternals.java:21)
at android.car.Car.(Car.java)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.assureInitialization(InlineBytecodeGenerator.java:236)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:261)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClass(InlineBytecodeGenerator.java:218)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.lambda$mockClass$0(TypeCachingBytecodeGenerator.java:78)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:168)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:399)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:190)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:410)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:75)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMockType(InlineDelegateByteBuddyMockMaker.java:427)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.doCreateMock(InlineDelegateByteBuddyMockMaker.java:386)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMock(InlineDelegateByteBuddyMockMaker.java:365)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMock(InlineByteBuddyMockMaker.java:56)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:99)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:84)
at org.mockito.Mockito.mock(Mockito.java:2162)
at org.mockito.Mockito.mock(Mockito.java:2077)
at BaseViewModelTests.setup(BaseViewModelTests.kt:26)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
... 13 more
Строка, вызывающая эту ошибку, действительно проста —

Код: Выделить всё

val mockCar = Mockito.mock(Car::class.java)
Зависимости теста build.gradle для моего проекта выглядят следующим образом -

Код: Выделить всё

testImplementation "junit:junit:4.13.2"
testImplementation "org.mockito:mockito-co6re:5.14.1"
testImplementation "org.mockito.kotlin:mockito-kotlin:5.4.0"
testImplementation 'org.robolectric:robolectric:4.13'
Я также проверил Car.java-
публичный финальный класс Car {
частный статический финальный String PROPERTY_PLATFORM_MINOR_VERSION = "ro.android.car .version.platform_minor";
....
Но он не наследовался ни от одного другого класса. Это финальный класс, но вызовет ли это проблемы у Mocking? Есть идеи, что может быть причиной этой ошибки?
Кроме того, 2 дня назад я поднял на GitHub ошибку по этой проблеме, но пока не получил никакого ответа -
https ://github.com/mockito/mockito/issues/3550
Любая помощь приветствуется. Спасибо! :)

Подробнее здесь: https://stackoverflow.com/questions/792 ... id-car-car
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Использование Mockito-inline в проекте выдает ошибку «Mockito не может издеваться над этим классом».
    Anonymous » » в форуме JAVA
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Как издеваться над финальным классом с Mockito-Core> 5.2.0 и без Mockito-inline?
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Mockito не может издеваться над этим классом?
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как мне издеваться над File.copyTo в Mockito и Kotlin
    Anonymous » » в форуме Android
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Как мне издеваться над File.copyTo в Mockito и Kotlin
    Anonymous » » в форуме Android
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»