TestNg problem with my seam application
argomauro Oct 26, 2006 3:49 AMI've create an application with SEAM and i've create a simple test class with testNg. I put in my classpath the embedded-ejb/conf but it's not work.
My Test class is:
public class TestManagerProfilo extends SeamTest { @Test public void testInsertProfilo() throws Exception{ new Script() { @Override protected void updateModelValues() throws Exception { EntityProfilo profilo = (EntityProfilo) Component.getInstance( "profilo", true); assert profilo != null; profilo.setId(new Integer(3)); profilo.setNome("mauro"); profilo.setDescrizione("Gavin King"); } @Override protected void invokeApplication() { ManagerProfilo manager = (ManagerProfilo) Component .getInstance("managerProfilo", true); String outcome = manager.insert(); assert "/registered.jsp".equals(outcome); } @Override protected void renderResponse() { EntityProfilo profilo = (EntityProfilo) Component.getInstance( "profilo", true); assert profilo != null; profilo.setId(new Integer(3)); profilo.setNome("mauro"); profilo.setDescrizione("Gavin King"); } }.run(); } }
My Entity class "EntityProfilo" is:
@Entity @Name("profilo") @Scope(SESSION) @Table(name="profilo") public class EntityProfilo implements Serializable { private static final long serialVersionUID = 1881413500711441951L; public EntityProfilo(Integer id, String nome, String descrizione) { this.id = id; this.nome = nome; this.descrizione = descrizione; } public EntityProfilo(){} private Integer id; private String nome; private String descrizione; //private Set<EntityUtente> utenti = new HashSet<EntityUtente>(0); public void setId(Integer id) { this.id = id; } @Id @GeneratedValue public Integer getId() { return id; } public void setNome(String nome) { this.nome = nome; } @NotNull @Length(min=5, max=15) public String getNome() { return nome; } public void setDescrizione(String descrizione) { this.descrizione = descrizione; } @NotNull @Length(min=5, max=15) public String getDescrizione() { return descrizione; } }
And my Session bean "ManagerProfilo" is:
@Stateless @Name("managerProfilo") public class ManagerProfilo implements Serializable, ICrud { @In (value="profilo") private EntityProfilo profilo; @PersistenceContext private EntityManager em; @Logger private Log log; public String insert() { em.persist(profilo); log.info("Profilo #{profilo.nome}"); return "insertProfilo"; } }
The problem is that when my test run this exception is throw:
INFO 26-10 09:21:16,093 (Log4JLogger.java:info:94) -no components.xml file found INFO 26-10 09:21:16,156 (Log4JLogger.java:info:94) -reading properties from: /jndi.properties INFO 26-10 09:21:16,156 (Log4JLogger.java:info:94) -initializing Seam INFO 26-10 09:21:16,343 (Log4JLogger.java:info:94) -Component: org.jboss.seam.core.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Init INFO 26-10 09:21:16,734 (Log4JLogger.java:info:94) -Component: org.jboss.seam.core.pages, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Pages INFO 26-10 09:21:16,765 (Log4JLogger.java:info:94) -Component: events, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Events INFO 26-10 09:21:16,812 (Log4JLogger.java:info:94) -Component: org.jboss.seam.core.manager, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.Manager INFO 26-10 09:21:16,890 (Log4JLogger.java:info:94) -Component: switcher, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.Switcher INFO 26-10 09:21:16,937 (Log4JLogger.java:info:94) -Component: redirect, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.Redirect INFO 26-10 09:21:16,953 (Log4JLogger.java:info:94) -Component: httpError, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.HttpError INFO 26-10 09:21:16,984 (Log4JLogger.java:info:94) -Component: userPrincipal, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.UserPrincipal INFO 26-10 09:21:17,015 (Log4JLogger.java:info:94) -Component: isUserInRole, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.IsUserInRole INFO 26-10 09:21:17,031 (Log4JLogger.java:info:94) -Component: conversation, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.Conversation INFO 26-10 09:21:17,093 (Log4JLogger.java:info:94) -Component: conversationList, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationList INFO 26-10 09:21:17,109 (Log4JLogger.java:info:94) -Component: conversationStack, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationStack INFO 26-10 09:21:17,125 (Log4JLogger.java:info:94) -Component: facesContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.FacesContext INFO 26-10 09:21:17,140 (Log4JLogger.java:info:94) -Component: pageContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.PageContext INFO 26-10 09:21:17,203 (Log4JLogger.java:info:94) -Component: eventContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.EventContext INFO 26-10 09:21:17,218 (Log4JLogger.java:info:94) -Component: sessionContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.SessionContext INFO 26-10 09:21:17,234 (Log4JLogger.java:info:94) -Component: statelessContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.StatelessContext INFO 26-10 09:21:17,234 (Log4JLogger.java:info:94) -Component: applicationContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ApplicationContext INFO 26-10 09:21:17,250 (Log4JLogger.java:info:94) -Component: conversationContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationContext INFO 26-10 09:21:17,265 (Log4JLogger.java:info:94) -Component: businessProcessContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.BusinessProcessContext INFO 26-10 09:21:17,281 (Log4JLogger.java:info:94) -Component: locale, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Locale INFO 26-10 09:21:17,296 (Log4JLogger.java:info:94) -Component: messages, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.Messages INFO 26-10 09:21:17,312 (Log4JLogger.java:info:94) -Component: interpolator, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Interpolator INFO 26-10 09:21:17,328 (Log4JLogger.java:info:94) -Component: facesMessages, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.FacesMessages INFO 26-10 09:21:17,359 (Log4JLogger.java:info:94) -Component: resourceBundle, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.ResourceBundle INFO 26-10 09:21:17,375 (Log4JLogger.java:info:94) -Component: localeSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.LocaleSelector INFO 26-10 09:21:17,406 (Log4JLogger.java:info:94) -Component: uiComponent, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.UiComponent INFO 26-10 09:21:17,406 (Log4JLogger.java:info:94) -Component: org.jboss.seam.remoting.messaging.subscriptionRegistry, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.remoting.messaging.SubscriptionRegistry INFO 26-10 09:21:17,687 (Log4JLogger.java:info:94) -Component: pojoCache, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.PojoCache INFO 26-10 09:21:17,937 (Log4JLogger.java:info:94) -done initializing Seam FAILED: testInsertProfilo java.lang.AssertionError at it.publisys.dap.test.TestManagerProfilo$1.updateModelValues(TestManagerProfilo.java:26) at org.jboss.seam.mock.SeamTest$Script.run(SeamTest.java:237) at it.publisys.dap.test.TestManagerProfilo.testInsertProfilo(TestManagerProfilo.java:49) ... Removed 20 stack frames =============================================== it.publisys.dap.test.TestManagerProfilo Tests run: 1, Failures: 1, Skips: 0 =============================================== =============================================== DAP Total tests run: 1, Failures: 1, Skips: 0 ===============================================
TestManagerProfilo don't work but when i deploy this application on JBoss it's work fine. I think that the problem is the project configuration or test configuration but i don't find it....
Thank for your help. I'm a new Seam programmer :-)