Accessing spring context in testng's @BeforeTest
java, spring-test, testng
Solution
Call `springTestContextPrepareTestInstance()` in your BeforeTest method.
Problem
I would like to register some web scopes to the spring context in my `@BeforeTest` method. But it turns out that spring context is still `null` at that point. The test runs fine though, if I change into `@BeforeMethod`. I wonder how I can access the context in `@BeforeTest`, because I don't want the scope registration code to be repeated for each test methods. Below are my code snippets. ``` 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 */ } ``` Here's the error message when running the test: ``` FAILED CONFIGURATION: @BeforeTest registerWebScopes java.lang.NullPointerException at my.MyBaseTest.registerWebScopes(MyBaseTest.java:22) ```