有没有办法在TestExecutionListener中获取对Spring应用程序上下文的引用?

有没有办法在TestExecutionListener中获取对Spring应用程序上下文的引用?,spring,junit5,junit5-extension-model,Spring,Junit5,Junit5 Extension Model,我正在使用JUnit和Selenium运行端到端测试,测试中的应用程序经常配置错误,我希望能够在所有测试之前运行一次安装程序 如何从TestExecutionListener中获取对测试的应用程序上下文的引用 我使用@SpringJUnitConfig扩展来运行测试 import static org.junit.jupiter.api.Assertions.fail; 导入org.junit.jupiter.api.Test; 导入org.springframework.test.contex

我正在使用JUnit和Selenium运行端到端测试,测试中的应用程序经常配置错误,我希望能够在所有测试之前运行一次安装程序

如何从TestExecutionListener中获取对测试的应用程序上下文的引用

我使用@SpringJUnitConfig扩展来运行测试

import static org.junit.jupiter.api.Assertions.fail;
导入org.junit.jupiter.api.Test;
导入org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@SpringJUnitConfig(SpringConfig.class)
公共类抽样测试{
@试验
void test1(){
失败();
}
}
我需要从TestExecutionListener中的应用程序上下文访问bean,通过重写testPlanExecutionStarted来进行一些初始设置

import org.junit.platform.launcher.TestExecutionListener;
导入org.junit.platform.launcher.TestPlan;
公共类TestSetupListener实现TestExecutionListener{
@凌驾
公共无效测试计划执行开始(最终测试计划测试计划){
//获取对applicationContext的引用
}
}
我想知道是否有一种方法可以访问我的测试将使用的同一个ApplicationContext,或者此时框架是否不知道测试应用程序上下文


我尝试过使用SpringExtension.getApplicationContext,但无法从TestExecutionListener中获取对ExtensionContext的引用。

我能找到的最好方法是使用以下内容

/**
*通过META-INF/spring.factories文件注册为默认侦听器
*确保AUT处于可测试状态
*/
公共类TestSetupListener扩展了AbstractTestExecutionListener{
private boolean setupRequired=true;
@自动连线
@凌驾
public void beforeTestClass(最终TestContext TestContext)引发异常{
如果(需要设置){
setupRequired=false;
ApplicationContext ApplicationContext=testContext.getApplicationContext();
applicationContext.getAutowireCapableBeanFactory().autowireBean(此);
...
}
}

我能找到的最好方法就是使用以下命令

/**
*通过META-INF/spring.factories文件注册为默认侦听器
*确保AUT处于可测试状态
*/
公共类TestSetupListener扩展了AbstractTestExecutionListener{
private boolean setupRequired=true;
@自动连线
@凌驾
public void beforeTestClass(最终TestContext TestContext)引发异常{
如果(需要设置){
setupRequired=false;
ApplicationContext ApplicationContext=testContext.getApplicationContext();
applicationContext.getAutowireCapableBeanFactory().autowireBean(此);
...
}
}