Eclipse Groovy:UNITSEST运行时发生冲突的模块版本
我使用的是Eclipse 2022-03(4.23.0),Groovy Devtools为4.5.0.V202203311327-E2203-REALE。
我的依赖项如下:
dependencies {
implementation "org.codehaus.groovy:groovy:$groovyVersion"
implementation "org.codehaus.groovy:groovy-json:$groovyVersion"
implementation "org.codehaus.groovy:groovy-templates:$groovyVersion"
implementation "org.codehaus.groovy:groovy-dateutil:$groovyVersion"
implementation "org.codehaus.groovy:groovy-yaml:$groovyVersion"
testImplementation "org.codehaus.groovy:groovy-all:$groovyVersion"
testImplementation "org.codehaus.groovy:groovy-xml:$groovyVersion"
}
使用groovyversion = 3.0.10
。
当我进行这样的测试时:
class GrantASTTransformationTest extends GroovyTestCase {
@Test
void 'some test'() {
fail 'not implemented'
}
}
抛出了例外:
java.lang.ExceptionInInitializerError
at org.codehaus.groovy.reflection.ClassInfo.isValidWeakMetaClass(ClassInfo.java:284)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClassForClass(ClassInfo.java:254)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:310)
at io.lootwalk.ast.GrantASTTransformationTest.$getStaticMetaClass(GrantASTTransformationTest.groovy)
at io.lootwalk.ast.GrantASTTransformationTest.<init>(GrantASTTransformationTest.groovy)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
......
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-swing is loaded in version 3.0.8 and you are trying to load version 3.0.10
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:510)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:87)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:81)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:63)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:54)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:125)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:37)
... 74 more
我“反应”以下几行纳入我的gradle依赖性:
implementation "org.codehaus.groovy:groovy-swing:$groovyVersion"
然后测试带有预期的例外:
junit.framework.AssertionFailedError: not implemented
当然,这似乎很奇怪,因为我在我的应用程序中不使用时髦的旋转。
有任何适当的解决问题的方法吗?
跟进:
这就是我的运行配置的样子:
I'm using Eclipse 2022-03 (4.23.0) with Groovy DevTools of 4.5.0.v202203311327-e2203-RELEASE.
My dependencies are as follows:
dependencies {
implementation "org.codehaus.groovy:groovy:$groovyVersion"
implementation "org.codehaus.groovy:groovy-json:$groovyVersion"
implementation "org.codehaus.groovy:groovy-templates:$groovyVersion"
implementation "org.codehaus.groovy:groovy-dateutil:$groovyVersion"
implementation "org.codehaus.groovy:groovy-yaml:$groovyVersion"
testImplementation "org.codehaus.groovy:groovy-all:$groovyVersion"
testImplementation "org.codehaus.groovy:groovy-xml:$groovyVersion"
}
with groovyVersion=3.0.10
.
When I run a test like this one:
class GrantASTTransformationTest extends GroovyTestCase {
@Test
void 'some test'() {
fail 'not implemented'
}
}
the exception is thrown:
java.lang.ExceptionInInitializerError
at org.codehaus.groovy.reflection.ClassInfo.isValidWeakMetaClass(ClassInfo.java:284)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClassForClass(ClassInfo.java:254)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:310)
at io.lootwalk.ast.GrantASTTransformationTest.$getStaticMetaClass(GrantASTTransformationTest.groovy)
at io.lootwalk.ast.GrantASTTransformationTest.<init>(GrantASTTransformationTest.groovy)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
......
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-swing is loaded in version 3.0.8 and you are trying to load version 3.0.10
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:510)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:87)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:81)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:63)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:54)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:125)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:37)
... 74 more
I "reacted" by including the following line into my Gradle-dependencies:
implementation "org.codehaus.groovy:groovy-swing:$groovyVersion"
then the test goes red with an expected exception:
junit.framework.AssertionFailedError: not implemented
That seems weird enough of course, as I'm not using groovy-swing in my app.
Any proper way to fix the issue?
FOLLOW UP:
This is how my Run Configuration looks like:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论