Desidero registrare alcuni ambiti Web nel contesto di primavera nel mio metodo @BeforeTest
. Ma si scopre che il contesto di primavera è ancora null
a quel punto.Accesso al contesto di primavera nel test @BeforeTest
Il test funziona benissimo, se cambio in @BeforeMethod
. Mi chiedo come posso accedere al contesto in @BeforeTest
, perché non voglio che il codice di registrazione dell'oscilloscopio venga ripetuto per ogni metodo di prova.
Di seguito sono riportati i frammenti di codice.
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 */
}
Ecco il messaggio di errore quando si esegue il test:
FAILED CONFIGURATION: @BeforeTest registerWebScopes java.lang.NullPointerException at my.MyBaseTest.registerWebScopes(MyBaseTest.java:22)
Sei a conoscenza di qualsiasi documentazione sul motivo per cui i membri iniettati non sono disponibili nei metodi '@ BeforeTest' e anche' @ BeforeSuite'? – ecbrodie
10x :) è più facile quindi scrivere post processor di bean –