Using BeforeTest and AfterTest in ComponentTest
frer Jun 14, 2008 8:06 PMHi,
I'm pretty new to testng and seam but am trying to get a test working in which I would have a setup and a teardown for each test.
If I try to do it without separation it works:
@Test public void testChangeName() throws Exception { new ComponentTest() { protected void testComponents() throws Exception { persistenceSession = (Session) Component.getInstance("persistenceSession"); groupFacade = (LoginGroupFacade<LoginGroup>) Component.getInstance(LoginGroupFacadeImpl.class); persistenceSession.getTransaction().begin(); group1 = new LoginGroup(); group1.setName("testGroup1"); group2 = new LoginGroup(); group2.setName("testGroup2"); group1 = groupFacade.save(group1); group2 = groupFacade.save(group2); persistenceSession.getTransaction().commit(); persistenceSession.getTransaction().begin(); group1.setName("testGroup1_mod"); groupFacade.save(group1); group2.setName("testGroup2_mod"); groupFacade.save(group2); persistenceSession.getTransaction().commit(); persistenceSession.getTransaction().begin(); group1 = groupFacade.fetchById(group1.getId()); group2 = groupFacade.fetchById(group2.getId()); groupFacade.delete(group1); groupFacade.delete(group2); persistenceSession.getTransaction().commit(); } }.run(); }
As you can see there are 3 different sections to my test and this is what I would like to do:
@BeforeTest public void beforeTest() throws Exception { //Create test data new ComponentTest() { protected void testComponents() throws Exception { persistenceSession = (Session) Component.getInstance("persistenceSession"); groupFacade = (LoginGroupFacade<LoginGroup>) Component.getInstance(LoginGroupFacadeImpl.class); persistenceSession.getTransaction().begin(); group1 = new LoginGroup(); group1.setName("testGroup1"); group2 = new LoginGroup(); group2.setName("testGroup2"); group1 = groupFacade.save(group1); group2 = groupFacade.save(group2); persistenceSession.getTransaction().commit(); } }.run(); } @AfterTest public void afterTest() throws Exception { //Delete test data new ComponentTest() { protected void testComponents() throws Exception { try { persistenceSession.getTransaction().begin(); group1 = groupFacade.fetchById(group1.getId()); group2 = groupFacade.fetchById(group2.getId()); groupFacade.delete(group1); groupFacade.delete(group2); persistenceSession.getTransaction().commit(); } catch (Exception e) { System.err.println(""); } } }.run(); } @Test public void testChangeName() throws Exception { new ComponentTest() { protected void testComponents() throws Exception { persistenceSession.getTransaction().begin(); group1.setName("testGroup1_mod"); groupFacade.save(group1); group2.setName("testGroup2_mod"); groupFacade.save(group2); persistenceSession.getTransaction().commit(); } }.run(); }
Unfortunately, I get the following exception when I launch this test:
FAILED CONFIGURATION: @BeforeTest beforeTest java.lang.NullPointerException at org.jboss.seam.servlet.ServletSessionMap.get(ServletSessionMap.java:54) at org.jboss.seam.contexts.BasicContext.get(BasicContext.java:48) at org.jboss.seam.contexts.Contexts.lookupInStatefulContexts(Contexts.java:199) at org.jboss.seam.Component.getInstance(Component.java:1842) at org.jboss.seam.Component.getInstance(Component.java:1837) at org.mdarad.global.tests.FirstTestCase$1.testComponents(FirstTestCase.java:74) at org.jboss.seam.mock.BaseSeamTest$ComponentTest.run(BaseSeamTest.java:169) at org.mdarad.global.tests.FirstTestCase.beforeTest(FirstTestCase.java:90) ... Removed 19 stack frames SKIPPED CONFIGURATION: @AfterTest afterTest
I'm wondering how I can correct this because it is important for me to have a setup and teardown method since many of my tests have common logic.
Thank you,
François