我正在尝试为JUnit 5编写扩展,并且很好奇我是否可以利用@SpringBootTest
已经为测试建立的mongodb连接。
例如,我的扩展名如下:
public class MyExtension implements BeforeTestExecutionCallback {
@Override
public void beforeTestExecution(ExtensionContext context) throws Exception {
// How do I get at the MongoClient here (or in the class constructor)?
}
}
我当然可以创建一个新的,但是我想重用已经设置的一个Spring,这样扩展就不必处理知道的信息,例如URI,身份验证凭据等。
有什么想法吗?
答案 0 :(得分:1)
SpringExtension
类提供一种用于获取与提供的ApplicationContext
关联的ExtensionContext
的方法。
然后您可以像这样从ApplicationContext
获取bean:
public class MyExtension implements BeforeTestExecutionCallback {
@Override
public void beforeTestExecution(ExtensionContext context) throws Exception {
ApplicationContext applicationContext = SpringExtension.getApplicationContext(context);
MongoClient mongoClient = applicationContext.getBean(MongoClient.class);
}
}