sbt-jupiter-interface
sbt-jupiter-interface copied to clipboard
compatibility with jmockit
when I use this plugin in our project. I got the error trace below:
java.util.ServiceConfigurationError:
org.junit.platform.engine.TestEngine: Provider mockit.integration.junit5.JMockitTestEngine could not be instantiated at java.util.ServiceLoader.fail(ServiceLoader.java:232) at java.util.ServiceLoader.access$100(ServiceLoader.java:185) at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384) at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:323) at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:407) at java.security.AccessController.doPrivileged(Native Method) at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:409) at java.util.ServiceLoader$1.next(ServiceLoader.java:480) at org.junit.platform.launcher.core.DefaultLauncher.validateUniqueIds(DefaultLauncher.java:63) at org.junit.platform.launcher.core.DefaultLauncher.
(DefaultLauncher.java:58) at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:59) at net.aichler.jupiter.api.JupiterTestCollector.collectTests0(JupiterTestCollector.java:246) at net.aichler.jupiter.api.JupiterTestCollector.invokeWithCustomClassLoader(JupiterTestCollector.java:306) at net.aichler.jupiter.api.JupiterTestCollector.collectTests(JupiterTestCollector.java:73) at net.aichler.jupiter.sbt.JupiterPlugin$$anonfun$collectTests$1.apply(JupiterPlugin.scala:100) at net.aichler.jupiter.sbt.JupiterPlugin$$anonfun$collectTests$1.apply(JupiterPlugin.scala:88) at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40) at sbt.std.Transform$$anon$4.work(System.scala:63) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) at sbt.Execute.work(Execute.scala:237) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159) at sbt.CompletionService$$anon$2.call(CompletionService.scala:28) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.UnsupportedOperationException: Attempted to redefine class loaded from custom class loader at mockit.internal.startup.InstrumentationHolder.getHolderClassFromSystemClassLoaderIfThisIsCustomClassLoader(InstrumentationHolder.java:77) at mockit.internal.startup.InstrumentationHolder.recoverInstrumentationFromHolderClassInSystemClassLoaderIfAvailable(InstrumentationHolder.java:56) at mockit.internal.startup.InstrumentationHolder.get(InstrumentationHolder.java:48) at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:143) at mockit.integration.junit5.JMockitTestEngine. (JMockitTestEngine.java:27) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380) at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:323) at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:407) at java.security.AccessController.doPrivileged(Native Method) at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:409) at java.util.ServiceLoader$1.next(ServiceLoader.java:480) at org.junit.platform.launcher.core.DefaultLauncher.validateUniqueIds(DefaultLauncher.java:63) at org.junit.platform.launcher.core.DefaultLauncher. (DefaultLauncher.java:58) at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:59) at net.aichler.jupiter.api.JupiterTestCollector.collectTests0(JupiterTestCollector.java:246) at net.aichler.jupiter.api.JupiterTestCollector.invokeWithCustomClassLoader(JupiterTestCollector.java:306) at net.aichler.jupiter.api.JupiterTestCollector.collectTests(JupiterTestCollector.java:73) at net.aichler.jupiter.sbt.JupiterPlugin$$anonfun$collectTests$1.apply(JupiterPlugin.scala:100) at net.aichler.jupiter.sbt.JupiterPlugin$$anonfun$collectTests$1.apply(JupiterPlugin.scala:88)
it seems that this plugin is not compatible with jmockit? we can successfully run test in intellij idea without plugin, but throw error when using sbt shell. So I suppose we need your plugin. please help us~ Thanks
@zzmzz I am unfortunately not familiar with jmockit. Could you please provide a bare minimum sbt project which shows the reported issue ? Thanks !