[jboss-user] [JBoss Seam] - TestNG unit tests with seam 2.0 in JPA environment?

andrew.rw.robinson do-not-reply at jboss.com
Mon Dec 17 01:39:02 EST 2007


I am having issues trying to figure out how to configure my unit tests to test my entities and seam components. I am running in the JPA environment. I made a test base class to setup the entity manager. I am just not sure how to hook up the EntityManagerFactory with my datasource.

Test class code:
  @Override @BeforeClass
  |   public void init() throws Exception
  |   {
  |     super.init();
  |     
  |     PGSimpleDataSource dataSource = new PGSimpleDataSource();
  |     dataSource.setDatabaseName("testdb");
  |     dataSource.setUser("user");
  |     dataSource.setPassword("pword");
  |     dataSource.setServerName("localhost");
  |     
  |     getInitialContext().bind("jdbc/testDatasource", dataSource);
  |     Map<String, String> props = new HashMap<String, String>();
  |     props.put("hibernate.default_schema", "test");
  |     props.put("hibernate.default_catalog", "testdb");
  | 
  |     entityManagerFactory = Persistence.createEntityManagerFactory("testDatabase", props);
  |   }
  | 
My /src/main/resources/persistence.xml:
<persistence>
  |   <persistence-unit name="testDatabase" transaction-type="RESOURCE_LOCAL">
  |     <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |     <jta-data-source>java:comp/env/jdbc/testDatasource</jta-data-source>
  |     <properties>
  |       <property name="hibernate.dialect"
  |         value="org.hibernate.dialect.PostgreSQLDialect" />
  |       <property name="connection.release_mode">after_statement</property>
  |       <property name="hibernate.default_schema">my</property>
  |       <property name="hibernate.default_catalog">my</property>
  |       <property name="hibernate.show_sql" value="true"/>
  |       <property name="hibernate.query.substitutions"/>
  |       <property name="hibernate.transaction.flush_before_completion" value="true"/>
  |       <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
  |       <!--
  |       <property name="hibernate.transaction.manager_lookup_class" 
  |         value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
  |       -->
  |       <property name="jboss.entity.manager.factory.jndi.name"
  |         value="java:/christwsEntityManagerFactory"/>
  |       <property name="jboss.entity.manager.jndi.name"
  |         value="java:/entityManager"/>
  |     </properties>
  |   </persistence-unit>
  | </persistence>

Without tomcat to setup the initial context I am not sure how to wire this to get the test running right.

I am in a maven environment using testng and surefire to run the test.

Any ideas?

The error:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
  | 	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
  | 	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
  | 	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
  | 	at javax.naming.InitialContext.bind(InitialContext.java:400)
  | ...

Thanks,
Andrew



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

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



More information about the jboss-user mailing list