[jboss-user] [JBoss Seam] - Re: Seam and JUnit

jazir1979 do-not-reply at jboss.com
Wed Oct 18 19:04:34 EDT 2006


Hi Markus,

I extended the SeamTest class for JUnit4 and it works fine.  However, to be honest, you may find moving to TestNG is preferable, I'm still tossing it up.

Here's what I hacked out very quickly, I overrode the begin method to set up my em and tm, so that I could use those to set up test data in my setUp().  If you don't need that, maybe you can even subclass SeamTest directly.


  | public class BaseSeamTest extends SeamTest {
  |     protected EntityManager em;
  |     protected TransactionManager tm;
  |     
  |     
  |     @Override
  |     public void begin() {       
  |         super.begin();
  |         if (em == null) {
  |             try {
  |                 em = (EntityManager) getInitialContext().lookup("java:/EntityManagers/localUnitTestEM");
  |                 tm = (TransactionManager) getInitialContext().lookup("java:/TransactionManager");
  |             } catch (NamingException e) {
  |                 throw new RuntimeException(e);
  |             }   
  |         }
  |     }    
  | }
  | 
  | 
  | public class LoginTest extends BaseSeamTest {
  |     
  |     @Test
  |     public void testFailedLogin() throws Exception {
  |         new Script() {
  |             @Override
  |             protected void updateModelValues() throws Exception {
  |                 assertFalse(isSessionInvalid());
  |                 final User user = (User) Component.getInstance("user", true);
  |                 assertNotNull(user);
  |                 user.setLogin("LoginTest_testLogin");
  |                 user.setPassword("password");
  |             }
  | 
  |             @Override
  |             protected void invokeApplication() throws Exception {
  |                 Login login = (Login) Component.getInstance("login", true);
  |                 assertEquals(null, login.login());
  |             }
  |             
  |             @Override
  |             protected void renderResponse() throws Exception {
  |                 final Iterator messages = FacesContext.getCurrentInstance().getMessages();
  |                 final FacesMessage message = (FacesMessage) messages.next();
  |                 assertEquals("LoginAction_InvalidLogin", message.getDetail());
  |                 assertFalse(messages.hasNext());                
  |             }                       
  |         }.run();
  |     }
  | .......
  | 

I hope that helps,

Daniel.


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3979217#3979217

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3979217



More information about the jboss-user mailing list