Groovy编写Spring测试类:多XML配置加载失败求助
在Groovy的Spring测试中加载多个XML Bean配置的解决方案
嘿,这个问题我之前也踩过坑!你猜的没错,确实是Groovy对大括号{}的解析规则在搞鬼——Groovy里{}默认会被当作闭包来处理,而不是Java里的数组/集合初始化语法,所以你之前的写法才会失效。下面给你两种可行的解决办法:
方法1:直接用@ContextConfiguration加载多个配置
把大括号换成Groovy的数组/列表声明语法[],Spring就能正确识别多个XML配置路径了:
@RunWith(SpringRunner) @SpringBootTest @ContextConfiguration(locations = ["a.xml", "b.xml"]) class MyTest { // 你的测试逻辑写在这里 }
方法2:正确使用@ContextHierarchy
如果需要上下文层级,同样要把注解参数的大括号换成方括号[],明确告诉Groovy这是一个数组:
@RunWith(SpringRunner) @SpringBootTest @ContextHierarchy([ @ContextConfiguration("a.xml"), @ContextConfiguration("b.xml") ]) class MyTest { // 你的测试逻辑写在这里 }
小提示
Groovy的语法糖虽然好用,但在注解参数里一定要注意:凡是需要传递数组或集合的地方,都要用[]而不是{},否则Groovy会把它解析成闭包,导致Spring无法正确识别你的配置路径。
内容的提问来源于stack exchange,提问作者Michael Hegner
相关产品推荐
相关产品推荐

