xmolecules / jmolecules-integrations

Technology integration for jMolecules
Apache License 2.0
85 stars 23 forks source link

jmolecules-integrations 1.6.0 not compatible with archunit 1.0.1 #160

Closed schowave closed 1 year ago

schowave commented 1 year ago

When I use the latest version of archunit 1.0.1 together with jmolecules-integrations 1.6.0, I get the error:

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 6. at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:64) at java.base@19.0.1/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base@19.0.1/java.lang.reflect.Method.invoke(Method.java:578) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Caused by: org.junit.platform.commons.JUnitException: TestEngine with ID 'archunit' failed to discover tests at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:160) at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverSafely(EngineDiscoveryOrchestrator.java:132) at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:107) at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:78) at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:110) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62) ... 16 more Caused by: com.tngtech.archunit.junit.internal.ArchTestInitializationException: java.lang.reflect.InvocationTargetException at app//com.tngtech.archunit.junit.internal.ReflectionUtils.getValueOrThrowException(ReflectionUtils.java:93) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.getValue(ArchUnitTestDescriptor.java:118) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.resolveChildren(ArchUnitTestDescriptor.java:113) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.lambda$resolveField$4(ArchUnitTestDescriptor.java:99) at app//com.tngtech.archunit.junit.internal.ElementResolver.handleNewSegment(ElementResolver.java:126) at app//com.tngtech.archunit.junit.internal.ElementResolver.resolve(ElementResolver.java:80) at app//com.tngtech.archunit.junit.internal.ElementResolver$UnresolvedMember.ifUnresolved(ElementResolver.java:230) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.resolveField(ArchUnitTestDescriptor.java:99) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.lambda$createChildren$2(ArchUnitTestDescriptor.java:92) at java.base@19.0.1/java.util.ArrayList.forEach(ArrayList.java:1511) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.createChildren(ArchUnitTestDescriptor.java:92) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.createTestDescriptor(ArchUnitTestDescriptor.java:84) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.lambda$resolve$0(ArchUnitTestDescriptor.java:69) at app//com.tngtech.archunit.junit.internal.ElementResolver$RequestedButUnresolvedClass.ifRequestedButUnresolved(ElementResolver.java:202) at app//com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.resolve(ArchUnitTestDescriptor.java:69) at app//com.tngtech.archunit.junit.internal.ArchUnitTestEngine.lambda$resolveRequestedClasses$3(ArchUnitTestEngine.java:126) at java.base@19.0.1/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base@19.0.1/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base@19.0.1/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base@19.0.1/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base@19.0.1/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base@19.0.1/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base@19.0.1/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) at java.base@19.0.1/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) at java.base@19.0.1/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base@19.0.1/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) at app//com.tngtech.archunit.junit.internal.ArchUnitTestEngine.resolveRequestedClasses(ArchUnitTestEngine.java:126) at app//com.tngtech.archunit.junit.internal.ArchUnitTestEngine.discover(ArchUnitTestEngine.java:88) at app//org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:152) ... 27 more Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:79) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484) at com.tngtech.archunit.base.ReflectionUtils.newInstanceOf(ReflectionUtils.java:32) at com.tngtech.archunit.junit.internal.ReflectionUtils.newInstanceOf(ReflectionUtils.java:72) at com.tngtech.archunit.junit.internal.ReflectionUtils.getValueOrThrowException(ReflectionUtils.java:90) ... 55 more Caused by: java.lang.NoSuchMethodError: 'com.tngtech.archunit.library.Architectures$LayeredArchitecture com.tngtech.archunit.library.Architectures.layeredArchitecture()' at org.jmolecules.archunit.JMoleculesArchitectureRules.onionArchitectureSimple(JMoleculesArchitectureRules.java:221) at org.jmolecules.archunit.JMoleculesArchitectureRules.ensureOnionSimple(JMoleculesArchitectureRules.java:129) at com.breuninger.evaluate.advice.architecture.HexagonArchitectureArchUnitTest.<init>(HexagonArchitectureArchUnitTest.kt:30) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) ... 60 more

You can check this with the repository https://gitlab.com/jamietanna/spring-boot-onion-architecture-example/-/blob/main/build.gradle and update the versions respectively.

odrotbohm commented 1 year ago

The 1.6 release was a mistake. The latest release version of jmolecules-integration is 0.13. We upgraded to ArchUnit 1.0 in that release. The 1.0.1 upgrade is pending for 0.14, but I'd expect 0.13 to still work with that assuming they haven't shipped any breaking changes.

schowave commented 1 year ago

Thank you for the clarification, this is working :-)