java - Junit 5 集成测试在 maven 3.5.2 构建中失败
问题描述
Junit5 集成在 intellij 中独立运行,但在使用堆栈跟踪的 maven 构建中失败,如下所示。
Caused by: java.lang.IllegalAccessError: superinterface check failed: class eu.nets.domain.QueuedMessage$HibernateProxy$1spaQq7T (in module eu.nets.queue.domain) cannot access class org.hibernate.proxy.ProxyConfiguration (in unnamed module @0x72a21be8) because module eu.nets.queue.domain does not read unnamed module @0x72a21be8**
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
at java.base/java.lang.System$2.defineClass(System.java:2189) ~[na:na]
at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:971) ~[na:na]
at java.base/jdk.internal.reflect.GeneratedMethodAccessor31.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
at net.bytebuddy.dynamic.loading.ClassInjector$UsingLookup$Dispatcher$ForJava9CapableVm.defineClass(ClassInjector.java:1685) ~[byte-buddy-1.9.16.jar:na]
... 125 common frames omitted
如果需要完整的堆栈跟踪,请告诉我
- 尝试使用最新的 maven-surefire-plugin 3.0.0-M3
- 以 jdk11 作为发行版运行
这是测试:
@Test
void fetchMessagesViaAdapter() throws Exception {
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders
.post("/resend")
.content("[\"queue1\"]")
.contentType(APPLICATION_JSON_UTF8_VALUE))
.andExpect(status().isOk())
.andReturn();
String resultDOW = mvcResult.getResponse().getContentAsString();
assertAll(
() -> assertNotNull(resultDOW),
() -> assertEquals("success", resultDOW));
}
解决方案
模块 eu.nets.queue.domain 不读取未命名的模块
根据您收到的错误,您可以添加以下 VM 选项来解决此问题 -
--add-reads eu.nets.queue.domain=ALL-UNNAMED
推荐阅读
- java - 没有找到类“android.support.v4.app.CoreComponentFactory”
- javascript - 在 JavaScript 中将已兑现的文件重新加载到浏览器 serviceWorker
- javascript - 如何修改 codemirror 的自动完成功能
- c++ - C++ 命名空间警告 - 声明隐藏全局声明 VS 2015 警告 C4459
- project-reactor - 线程在反应器执行中是否曾经更改过一次?
- string - Haskell 最后一个字符串
- java - 如何在不同的方法中使用arraylist,但方法在类内部
- php - PHP preg_match 检查文件名以括号数字结尾(例如文件名(1).pdf)
- regex - Using re.finditer to generate iterative object, but no return, the regex code is ok when testing separately
- syntax-error - 寻求帮助以纠正我的 Verilog 代码中的语法错误