假设我有一堂课注入了很多春豆:
@Component
open class CoreContext {
@Inject
protected lateinit var bean1 : SomeInterface1
@Inject
protected lateinit var bean2 : SomeInterface2
}
它在context:component-scan
的{{1}}块中定义,在传统的SpringTest中,它的工作原理如下:
core.xml
现在,我想尝试使用DSL样式定义bean,并将这些DSL定义的bean与旧bean一起使用:
@RunWith(SpringRunner::class)
@ContextConfiguration(locations = ["classpath:core.xml"])
class CoreContextTest { ... }
@Component
class MyBeans : CoreContext() {
val beans = beans {
bean("simpleComparator") {
Comparator<Number> { o1, o2 -> o1.toInt().minus(o2.toInt()) }
}
}
}
位于MyBeans
软件包中,并且IntelliJ可以正确检测到它。
但是如何测试这个simpleComparator?
我尝试component-scan
,但是intelliJ抱怨@Inject simpleComparator : Comparator<Number>
。并且在运行时,它按预期失败。
No beans of Comparator<Number> type found
当我想打印出所有已注册的bean时,找不到
@RunWith(SpringRunner::class)
@ContextConfiguration(locations = ["classpath:core.xml"])
class MyBeansTest {
@Inject
private lateinit var context: ApplicationContext
// @Inject // No beans of Comparator<Number> type found
// private lateinit var simpleComparator : Comparator<Number>
@Test
fun printBeans() {
logger.info("context = {}", context)
context.beanDefinitionNames.forEach { name ->
logger.info("{}", name)
}
}
}
bean。
似乎所有相关信息都是基于SpringBoot的。但是我找不到纯粹的simpleComparator
单元测试示例。谢谢。
版本:
SpringRunner