[jboss-user] [JBoss Seam] - Test problem with EntityController, waiting online for answe

Seto do-not-reply at jboss.com
Sun Nov 4 09:13:04 EST 2007


The register component injected a DAO. When the DAO extends EntityController, when only one test exists, it runs normal;when two tests or above the second test will throw exception that entityManager is closed.When the DAO injects the EntityManager directly, doesn't extend the EntityController which encapsulate a EntityManager, no matter how many tests exist, it runs normal. Why?


  | package com.kdccn.test;
  | 
  | import static org.testng.Assert.*;
  | 
  | import java.util.*;
  | 
  | import org.testng.annotations.*;
  | 
  | import org.jboss.seam.mock.*;
  | 
  | import com.kdccn.util.*;
  | 
  | public class UserTest extends SeamTest {
  | 
  | 	@Test
  | 	public void testLogin() throws Exception {
  | 		new FacesRequest("/user/login.xhtml") {
  | 			@Override
  | 			protected void updateModelValues() {
  | 				setValue("#{identity.username}", "admin");
  | 				setValue("#{identity.password}", "secret");
  | 			}
  | 
  | 			@Override
  | 			protected void invokeApplication() {
  | 				invokeAction("#{identity.login}");
  | 			}
  | 		}.run();
  | 	}
  | 
  | 	@Test
  | 	public void testRegister() throws Exception {
  | 		new FacesRequest("/user/register.xhtml") {
  | 			@Override
  | 			protected void updateModelValues() {
  | 				setValue("#{newUser.email}", "kaibaseto at gmail.com");
  | 				setValue("#{newUser.qq}", 61304189L);
  | 				setValue("#{newUser.icq}", 259833852L);
  | 				setValue("#{newUser.kugoo}", 318921L);
  | 				setValue("#{newUser.msn}", "realsetokaiba at msn.com");
  | 				setValue("#{newUser.yahoo}", "realsetokaiba at yahoo.com.cn");
  | 				setValue("#{newUser.google}", "kaibaseto at gmail.com");
  | 				setValue("#{newUser.alipay}", "kaibaseto at gmail.com");
  | 				setValue("#{newUser.wangwang}", "setokaiba");
  | 				setValue("#{newUser.website}", "www.kdccn.com");
  | 				setValue("#{newUser.question}", "secret");
  | 				setValue("#{newUser.answer}", "secret");
  | 				setValue("#{newUser.place}", "China");
  | 				setValue("#{newUser.phone}", "+8613763335987");
  | 				Calendar calendar = Calendar.getInstance();
  | 				calendar.set(1987, Calendar.DECEMBER, 30);
  | 				setValue("#{newUser.birthday}", calendar.getTime());
  | 				setValue("#{newUser.description}", "Nothing");
  | 				setValue("#{newUser.firstname}", "Seto");
  | 				setValue("#{newUser.lastname}", "Kaiba");
  | 				setValue("#{newUser.nickname}", "Seto");
  | 				setValue("#{newUser.username}", "SetoKaiba");
  | 				setValue("#{register.password}", "secret");
  | 				setValue("#{register.confirm}", "secret");
  | 				setValue("#{register.gender}", "Male");
  | 			}
  | 
  | 			@Override
  | 			protected void invokeApplication() {
  | 				invokeAction("#{register.register}");
  | 			}
  | 
  | 			@Override
  | 			protected void renderResponse() {
  | 				assertNotNull(getValue("#{newUser.id}"));
  | 				assertEquals(getValue("#{newUser.hashedPassword}"), Hash
  | 						.instance().hash("secret"));
  | 				assertTrue((Boolean) getValue("#{s:hasRole('user')}"));
  | 			}
  | 		}.run();
  | 	}
  | }
  | 

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

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



More information about the jboss-user mailing list