JBoss Seam Web Application Testing fails with TestNG
hebo Jun 2, 2008 3:29 PMHi every body. I am trying to test a web application with testng, but having trouble to get the entityManager in my test class. This is my test class:
public class SeamDBUnitTest extends SeamTest {
    private EntityManager entityManager;
    private EntityManagerFactory emf;
    @Test
    protected void firstTest() throws Exception {
         entityManager = getEntityManagerFactory().createEntityManager();
...
...
     }
    
    
    public EntityManagerFactory getEntityManagerFactory()
    {
        return emf;
    }
    
    
    
@BeforeClass
    public void init() 
    {
        emf = Persistence.createEntityManagerFactory("myPersistence");
    }
    
    @AfterClass
    public void destroy()
    {
        emf.close();
    }
}
my persistence.xml file:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
  <persistence-unit name="myPersistence">    
   <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jdbc/myDS</jta-data-source>
    <properties>
      <property name="hibernate.dialect" 
          value="org.hibernate.dialect.MySQLDialect"/>
      <property name="hibernate.hbm2ddl.auto" 
          value="none"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="jboss.entity.manager.factory.jndi.name"
                   value="java:/myPersistence" />
    </properties>
  </persistence-unit>
</persistence>
But when I run testng from eclipse I get the following error:
FATAL org.hibernate.connection.DatasourceConnectionProvider - Could not find datasource: java:jdbc/myDS
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.lookup(InitialContext.java:392)
     at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
     at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
     at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
     at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
     at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)
     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
     at test.numbersinsight.lingraph.admin.SeamDBUnitTest.init(SeamDBUnitTest.java:53)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
     at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:398)
     at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:145)
     at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:82)
     at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:167)
     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:104)
     at org.testng.TestRunner.runWorkers(TestRunner.java:712)
     at org.testng.TestRunner.privateRun(TestRunner.java:582)
     at org.testng.TestRunner.run(TestRunner.java:477)
     at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
     at org.testng.SuiteRunner.run(SuiteRunner.java:198)
     at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
     at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
     at org.testng.TestNG.run(TestNG.java:708)
     at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
     at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
Failed to invoke @Configuration method test.mypackage.SeamDBUnitTest.init:org.hibernate.HibernateException: Could not find datasource
[Invoker 32389396] Invoking @BeforeMethod org.jboss.seam.mock.SeamTest.begin()
Failed to invoke @Configuration method org.jboss.seam.mock.SeamTest.begin:Attempted to invoke a Seam component outside the an initialized application
***** INVOKED METHODS
     test.mypackage.SeamDBUnitTest.init() 5506056
     test.mypackage.SeamDBUnitTest.firstTest() 5506056
*****
Please help.
 
    