SpringBoot 2.x,JUnit 5扩展和MongoClient

时间:2019-05-31 20:39:31

标签: spring-data spring-data-mongodb junit5

我正在尝试为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,身份验证凭据等。

有什么想法吗?

1 个答案:

答案 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);
    }
}