[jboss-user] [JBoss Seam] - Need help with SeamTest

francof do-not-reply at jboss.com
Tue Jul 10 10:56:08 EDT 2007


I'm writing my first SeamTest class. I like the idea of TDD, but I'm kinda frustrated with getting my first test working perfectly. I'm struggling with this problem for 2 days now. I also combed the forum/google for an answer.

META-INF/persistence.xml, hibernate.cfg.xml

  | <persistence>
  |     <persistence-unit name="cast">
  | 	<properties>
  | 	<property name="hibernate.ejb.cfgfile"
  | 	value="/hibernate.cfg.xml"/>
  | 	</properties>
  | </persistence-unit>
  | </persistence>
  | 

  | <hibernate-configuration>
  | <session-factory>
  | 
  | <!-- Hibernate settings -->
  | <property name="hibernate.connection.driver_class"  >oracle.jdbc.driver.OracleDriver   </property>
  | <property name="hibernate.connection.url" >jdbc:oracle:thin:@localhost:1521:ORCL </property>
  | <property name="hibernate.connection.username" >scarduser</property>
  | <property name="hibernate.connection.password"> scarduser</property>
  | <property name="hibernate.dialect" >org.hibernate.dialect.Oracle9Dialect</property>
  | 
  | <!-- JDBC connection pool -->
  | <property name="connection.pool_size" >15</property>
  | 
  | <property name="hibernate.hbm2ddl.auto">update</property>
  | 
  | <!-- Enable Hibernate's automatic session context management -->
  | <property name="current_session_context_class">thread</property>
  | 
  | <property name="format_sql">true</property>
  | <property name="use_sql_comments">false</property>
  | <property name="generate_statistics">false</property>
  | <!-- SQL logging configuration -->
  | <!-- NOTE: to show sql, use DEBUG log level for org.hibernate.SQL category -->
  | <!--
  | <property name="show_sql">true</property>
  | -->
  | 
  | <!-- Query configuration -->
  | <property name="hibernate.query.substitutions">true 1, false 0</property>
  | <property name="hibernate.max_fetch_depth">2</property>
  | 
  | <!-- Batch configuration -->
  | <property name="hibernate.default_batch_fetch_size">8</property>
  | <property name="hibernate.jdbc.batch_size">20</property>
  | 
  | <mapping class="com.ibm.dw.open18.Course"/>
  | <mapping class="com.cmsc.sonycard.model.Catalog"/> 
  | </session-factory>
  | </hibernate-configuration> 
  | 

My seamtest class - CatalogTest


  | package com.cmsc.sonycard.model;
  | 
  | /** Imports omitted ***/
  | public class CatalogTest extends SeamTest {
  | 	private Catalog catalog;
  | 
  | /* START SECTION A
  | 	private EntityManagerFactory emf;
  | 
  | 	public EntityManagerFactory getEntityManagerFactory() {
  | 		return emf;
  | 	}
  | 
  | 	@Configuration(beforeTestClass = true)
  | 	public void init() {
  | 		emf = Persistence
  | 				.createEntityManagerFactory("cast");
  | 	}
  | 
  | 	@Configuration(afterTestClass = true)
  | 	public void destroy() {
  | 			emf.close();
  | 
  | 	}
  | END SECTION A */
  | 
  | 	@Test
  | 	public void testPersist() {
  |     	EntityManagerFactory emf =
  |     	     Persistence.createEntityManagerFactory("cast");
  |     	EntityManager em = emf.createEntityManager();
  | 		catalog = new Catalog();
  | 		catalog.setName("Blah Blah");
  | 		catalog.setActive("Y");
  |         em.getTransaction().begin();
  |         em.persist(catalog);
  |         em.getTransaction().commit();
  | 
  |         em.close();
  | 	}
  | 
  | }
  | 
  | 
  | 


My tests run fine with the above code as is. The problem is when I uncomment "Section A" and run my test again -
 my testPersist() still runs successfully but I get these errors.

   [testng] 10:50:38,202 WARN  [DriverManagerConnectionProvider] problem closing pooled connection
   [testng] java.sql.SQLException: Io exception: Socket closed
   [testng]     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
   [testng]     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
   [testng]     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
   [testng]     at oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1442)
   [testng]     at org.hibernate.connection.DriverManagerConnectionProvider.close(DriverManagerConnectionProvider.java:152)
   [testng]     at org.hibernate.connection.DriverManagerConnectionProvider.finalize(DriverManagerConnectionProvider.java:142)
   [testng]     at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
   [testng]     at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
   [testng]     at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
   [testng]     at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
   [testng] 10:50:38,202 INFO  [TableMetadata] columns: [phone, type, street, postal_code, id, county, longitude, country, uri, description, state, latitude, na
me, city]
   [testng] 10:50:38,202 INFO  [DriverManagerConnectionProvider] cleaning up connection pool: jdbc:oracle:thin:@localhost:1521:ORCL
   [testng] 10:50:38,202 WARN  [DriverManagerConnectionProvider] problem closing pooled connection
   [testng] java.sql.SQLException: Io exception: Socket closed
   [testng]     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
   [testng]     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
   [testng]     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
   [testng]     at oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1442)
   [testng]     at org.hibernate.connection.DriverManagerConnectionProvider.close(DriverManagerConnectionProvider.java:152)
   [testng]     at org.hibernate.connection.DriverManagerConnectionProvider.finalize(DriverManagerConnectionProvider.java:142)
   [testng]     at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
   [testng]     at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
   [testng]     at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
   [testng]     at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
   [testng] 10:50:38,202 INFO  [TableMetadata] foreign keys: []
   [testng] 10:50:38,202 INFO  [TableMetadata] indexes: [sys_c005286]
   [testng] 10:50:38,202 INFO  [SchemaUpdate] schema update complete
   [testng] Creating C:\source\cast\build\testout\CatalogTest.html
   [testng] PASSED: testPersist
   [testng] FAILED: org.jboss.seam.mock.SeamTest.end()
   [testng] java.lang.NullPointerException
   [testng]     at org.jboss.seam.contexts.WebApplicationContext.get(WebApplicationContext.java:48)
   [testng]     at org.jboss.seam.Component.forName(Component.java:1579)
   [testng]     at org.jboss.seam.Component.getInstance(Component.java:1627)
   [testng]     at org.jboss.seam.Component.getInstance(Component.java:1622)
   [testng]     at org.jboss.seam.Component.getInstance(Component.java:1599)
   [testng]     at org.jboss.seam.Component.getInstance(Component.java:1594)
   [testng]     at org.jboss.seam.core.ConversationEntries.instance(ConversationEntries.java:91)
   [testng]     at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:284)
   [testng]     at org.jboss.seam.mock.SeamTest.end(SeamTest.java:676)
   [testng]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)



I tried putting the same code block into the registration example and I get similar errors. Am I missing something in the testng configuration.

Sorry for the long post. Thanks for any help, will keep trying, got some free time to play today.

Franco



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

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



More information about the jboss-user mailing list