我想在@BeforeTest
方法中向Spring上下文注册一些Web范围。但是事实证明,那时的Spring上下文仍然是null
。
但是,如果我更改为@BeforeMethod
,则测试运行正常。我不知道如何访问@BeforeTest
中的上下文,因为我不希望每种测试方法都重复作用域注册代码。
以下是我的代码段。
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 */
}
这是运行测试时的错误消息:
失败的配置:@BeforeTest registerWebScopes
java.lang.NullPointerException
在my.MyBaseTest.registerWebScopes(MyBaseTest.java:22)
最佳答案
在BeforeTest方法中调用springTestContextPrepareTestInstance()
。
关于java - 在testng的@BeforeTest中访问spring上下文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10184602/