Me gustaría registrar algunos ámbitos web en el contexto de primavera en mi método @BeforeTest
. Pero resulta que el contexto de primavera todavía es null
en ese punto.Accediendo al contexto de la primavera en testng @BeforeTest
La prueba funciona bien, si cambio a @BeforeMethod
. Me pregunto cómo puedo acceder al contexto en @BeforeTest
, porque no quiero que el código de registro del alcance se repita para cada método de prueba.
A continuación se muestran mis fragmentos de código.
public class MyTest extends MyBaseTest {
@Test public void someTest() { /*...*/ }
}
@ContextConfiguration(locations="/my-context.xml")
public class MyBaseTest extends AbstractTestNGSpringContextTests {
@BeforeTest public void registerWebScopes() {
ConfigurableBeanFactory factory = (ConfigurableBeanFactory)
this.applicationContext.getAutowireCapableBeanFactory();
factory.registerScope("session", new SessionScope());
factory.registerScope("request", new RequestScope());
}
/* some protected methods here */
}
Aquí está el mensaje de error cuando se ejecuta la prueba:
FAILED CONFIGURATION: @BeforeTest registerWebScopes java.lang.NullPointerException at my.MyBaseTest.registerWebScopes(MyBaseTest.java:22)
¿Conoce alguna documentación sobre por qué los miembros inyectados no están disponibles en los métodos '@ BeforeTest' e incluso' @ BeforeSuite'? – ecbrodie
10x :) es más fácil escribir post procesador de frijoles –