SpringBoot 2.x、JUnit 5 扩展和 MongoClient
SpringBoot 2.x, JUnit 5 extension, and MongoClient
我正在尝试为 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、身份验证凭据、等等
有什么想法吗?
SpringExtension
class 提供了一种获取 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);
}
}
我正在尝试为 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、身份验证凭据、等等
有什么想法吗?
SpringExtension
class 提供了一种获取 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);
}
}