-
-
Notifications
You must be signed in to change notification settings - Fork 378
Closed
Description
On MockK version 1.13.17, this code in the test
folder of an Android library project works:
package mypackage
import android.net.Uri
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import org.junit.jupiter.api.Test
class Test {
@Test
fun test() {
try {
mockkStatic(Uri::class)
every { Uri.parse(any()) } answers { mockk() }
} finally {
unmockkStatic(Uri::class)
}
}
}
But in MockK 1.14.0 it fails:
class redefinition failed: invalid class
java.lang.InternalError: class redefinition failed: invalid class
at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses(Unknown Source)
at io.mockk.proxy.jvm.transformation.JvmInlineInstrumentation.retransform(JvmInlineInstrumentation.kt:28)
at io.mockk.proxy.common.transformation.RetransformInlineInstrumentation$doCancel$1.invoke(RetransformInlineInstrumentation.kt:38)
at io.mockk.proxy.common.transformation.RetransformInlineInstrumentation$doCancel$1.invoke(RetransformInlineInstrumentation.kt:32)
at io.mockk.proxy.common.transformation.ClassTransformationSpecMap.applyTransformation(ClassTransformationSpecMap.kt:41)
at io.mockk.proxy.common.transformation.RetransformInlineInstrumentation.doCancel(RetransformInlineInstrumentation.kt:32)
at io.mockk.proxy.common.transformation.RetransformInlineInstrumentation.access$doCancel(RetransformInlineInstrumentation.kt:6)
at io.mockk.proxy.common.transformation.RetransformInlineInstrumentation$execute$1$1.invoke(RetransformInlineInstrumentation.kt:17)
at io.mockk.proxy.common.transformation.RetransformInlineInstrumentation$execute$1$1.invoke(RetransformInlineInstrumentation.kt:17)
at io.mockk.proxy.common.CancelableResult.cancel(CancelableResult.kt:22)
at io.mockk.proxy.common.CancelableResult$alsoOnCancel$1.invoke(CancelableResult.kt:30)
at io.mockk.proxy.common.CancelableResult$alsoOnCancel$1.invoke(CancelableResult.kt:29)
at io.mockk.proxy.common.CancelableResult.cancel(CancelableResult.kt:22)
at io.mockk.impl.instantiation.JvmStaticMockFactory$staticMockk$3.invoke(JvmStaticMockFactory.kt:45)
at io.mockk.impl.instantiation.JvmStaticMockFactory$staticMockk$3.invoke(JvmStaticMockFactory.kt:45)
at io.mockk.impl.stub.MockKStub.dispose(MockKStub.kt:321)
at io.mockk.impl.instantiation.JvmStaticMockFactory$staticMockk$4.invoke(JvmStaticMockFactory.kt:55)
at io.mockk.impl.instantiation.JvmStaticMockFactory$staticMockk$4.invoke(JvmStaticMockFactory.kt:50)
at io.mockk.MockKCancellationRegistry$RegistryPerType.cancel(API.kt:2530)
at mypackage.Test.test(Test.kt:80)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at java.base/java.util.ArrayList.forEach(Unknown Source)
Versions used:
- MockK: 1.14.0
- Android Gradle Plugin: 8.9.1
- Kotlin: 2.1.20
I've also tried depending on net.bytebuddy:byte-buddy
and net.bytebuddy:byte-buddy-agent
in this project to change the resolved version that's used. I then set it to the latest available Byte Buddy version - 1.17.5
. This didn't change anything - it's still failing the same way.
Metadata
Metadata
Assignees
Labels
No labels