我想在@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/

10-10 05:50