[jboss-user] [JBoss Seam] - Uni testing and datasource problem

jagin do-not-reply at jboss.com
Sat Jan 5 13:11:54 EST 2008


Hi to all,

I generate simple application with seam-gen. I didn't touch any existing code. I add simple UserDaoSeam class wich I want to test.
I have some problem with simple unit testing. I want to do something like in the Seam Reference book on page 293-294.
The code of the test is like this:


  | public class UserDaoTest extends SeamTest {
  | 	
  | 	private EntityManagerFactory emf;
  | 	
  | 	public EntityManagerFactory getEntityManagerFactory() {
  | 		return emf;
  | 	}
  | 	
  | 	@BeforeClass
  | 	public void init() {
  | 		emf = Persistence.createEntityManagerFactory("ezapp");
  | 	}
  | 	
  | 	@AfterClass
  | 	public void destroy() {
  | 		emf.close();
  | 	}
  | 
  | 	@Test
  | 	public void testFindByUsername() {
  | 		EntityManager em = emf.createEntityManager();
  | 		em.getTransaction().begin();
  | 		
  | 		UserDaoSeam userDao = new UserDaoSeam();
  | 		userDao.setEntityManager(em);
  | 
  | 		User user = userDao.findByUsername("jkowalski");
  | 		
  | 		assert user != null;
  | 		
  | 		em.getTransaction().rollback();
  | 		em.close();
  | 	}
  | }
  | 

after ant test i get


  | D:\dev\ezapp>ant test
  | Buildfile: build.xml
  | 
  | compiletest:
  | 
  | copytestclasses:
  | 
  | buildtest:
  |      [copy] Copying 1 file to D:\dev\ezapp\test-build\META-INF
  |      [copy] Copying 1 file to D:\dev\ezapp\test-build
  | 
  | test:
  |    [testng] [Parser] Running:
  |    [testng]   D:\dev\ezapp\test-build\PersistenceTest.xml
  |    [testng]
  |    [testng] FATAL [org.hibernate.connection.DatasourceConnectionProvider] Could not find datasource: java:/DefaultDS
  |    [testng] java.lang.RuntimeException: PROVIDER_URL not provided in jndi.properties.  Automatic discovery not implemented yet.
  |    [testng]     at org.jboss.naming.JBossRemotingContextFactory.getInitialContext(JBossRemotingContextFactory.java:158)
  |    [testng]     at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
  |    [testng]     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
  |    [testng]     at javax.naming.InitialContext.init(InitialContext.java:223)
  |    [testng]     at javax.naming.InitialContext.<init>(InitialContext.java:175)
  |    [testng]     at org.hibernate.util.NamingHelper.getInitialContext(NamingHelper.java:28)
  |    [testng]     at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
  |    [testng]     at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
  |    [testng]     at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
  |    [testng]     at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
  |    [testng]     at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
  |    [testng]     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
  |    [testng]     at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:918)
  |    [testng]     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:656)
  |    [testng]     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
  |    [testng]     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
  |    [testng]     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
  |    [testng]     at pl.unizeto.ezapp.persistence.UserDaoTest.init(UserDaoTest.java:24)
  |    [testng]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |    [testng]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |    [testng]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |    [testng]     at java.lang.reflect.Method.invoke(Method.java:585)
  |    [testng]     at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:604)
  |    [testng]     at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:394)
  |    [testng]     at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
  |    [testng]     at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:79)
  |    [testng]     at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:165)
  |    [testng]     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:103)
  |    [testng]     at org.testng.TestRunner.runWorkers(TestRunner.java:678)
  |    [testng]     at org.testng.TestRunner.privateRun(TestRunner.java:624)
  |    [testng]     at org.testng.TestRunner.run(TestRunner.java:495)
  |    [testng]     at org.testng.SuiteRunner.runTest(SuiteRunner.java:300)
  |    [testng]     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:295)
  |    [testng]     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:275)
  |    [testng]     at org.testng.SuiteRunner.run(SuiteRunner.java:190)
  |    [testng]     at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:792)
  |    [testng]     at org.testng.TestNG.runSuitesLocally(TestNG.java:765)
  |    [testng]     at org.testng.TestNG.run(TestNG.java:699)
  |    [testng]     at org.testng.TestNG.privateMain(TestNG.java:824)
  |    [testng]     at org.testng.TestNG.main(TestNG.java:802)
  |    [testng] FAILED CONFIGURATION: @BeforeClass init
  |    [testng] javax.persistence.PersistenceException: org.hibernate.HibernateException: Could not find datasource
  |    [testng]     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:663)
  |    [testng]     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
  |    [testng]     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
  |    [testng]     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
  |    [testng]     at pl.unizeto.ezapp.persistence.UserDaoTest.init(UserDaoTest.java:24)
  |    [testng] Caused by: org.hibernate.HibernateException: Could not find datasource
  |    [testng]     at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56)
  |    [testng]     at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
  |    [testng]     at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
  |    [testng]     at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
  |    [testng]     at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
  |    [testng]     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
  |    [testng]     at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:918)
  |    [testng]     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:656)
  |    [testng]     ... 26 more
  |    [testng] Caused by: java.lang.RuntimeException: PROVIDER_URL not provided in jndi.properties.  Automatic discovery not implemented yet.
  |    [testng]     at org.jboss.naming.JBossRemotingContextFactory.getInitialContext(JBossRemotingContextFactory.java:158)
  |    [testng]     at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
  |    [testng]     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
  |    [testng]     at javax.naming.InitialContext.init(InitialContext.java:223)
  |    [testng]     at javax.naming.InitialContext.<init>(InitialContext.java:175)
  |    [testng]     at org.hibernate.util.NamingHelper.getInitialContext(NamingHelper.java:28)
  |    [testng]     at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
  |    [testng]     ... 33 more
  |    [testng] ... Removed 22 stack frames
  |    [testng] FAILED CONFIGURATION: @BeforeMethod begin
  |    [testng] java.lang.IllegalStateException: Attempted to invoke a Seam component outside the an initialized application
  |    [testng]     at org.jboss.seam.contexts.Lifecycle.getApplication(Lifecycle.java:36)
  |    [testng]     at org.jboss.seam.contexts.Lifecycle.beginSession(Lifecycle.java:173)
  |    [testng]     at org.jboss.seam.contexts.ServletLifecycle.beginSession(ServletLifecycle.java:124)
  |    [testng]     at org.jboss.seam.mock.BaseSeamTest.begin(BaseSeamTest.java:918)
  |    [testng]     at org.jboss.seam.mock.SeamTest.begin(SeamTest.java:28)
  |    [testng] ... Removed 24 stack frames
  |    [testng] SKIPPED CONFIGURATION: @AfterMethod end
  |    [testng] SKIPPED CONFIGURATION: @AfterClass destroy
  |    [testng] SKIPPED CONFIGURATION: @AfterClass cleanup
  |    [testng] SKIPPED: testFindByUsername
  |    [testng]
  |    [testng] ===============================================
  |    [testng]     ezApp
  |    [testng]     Tests run: 1, Failures: 0, Skips: 1
  |    [testng]     Configuration Failures: 2, Skips: 3
  |    [testng] ===============================================
  |    [testng]
  |    [testng]
  |    [testng] ===============================================
  |    [testng] ezApp
  |    [testng] Total tests run: 1, Failures: 0, Skips: 1
  |    [testng] Configuration Failures: 2, Skips: 3
  |    [testng] ===============================================
  |    [testng]
  | 
  | BUILD SUCCESSFUL
  | Total time: 2 seconds
  | 

the persistence-test.xml is seam-gen generated without any change


  | <?xml version="1.0" encoding="UTF-8"?>
  | <!-- Persistence deployment descriptor for tests -->
  | <persistence xmlns="http://java.sun.com/xml/ns/persistence" 
  |              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |              xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
  |              version="1.0">
  |              
  |    <persistence-unit name="ezapp">
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/DefaultDS</jta-data-source>
  |       <properties>
  |          <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
  |          <property name="hibernate.show_sql" value="true"/>
  |          <property name="hibernate.cache.use_second_level_cache" value="false"/>
  |          <property name="jboss.entity.manager.factory.jndi.name" value="java:/ezappEntityManagerFactory"/>
  |       </properties>
  |    </persistence-unit>
  |     
  | </persistence>
  | 

Why i'm getting Could not find datasource: java:/DefaultDS error? Am I missing something. I read all reference book, diged forum and googled very deep and didn't find any solution. What's wrong?

I found that DefaultDS is defined in bootstrap/deploy/hsqldb-ds.xml. So I made this file errorous but i got the same error. I looks like this file is not read in the embedded environment.

I try this wit Seam 2.0.0.GA and 2.0.1.CR1

Any help or working unit test example will be very weelcome.

I'm a newbee in seam matter so please be kind :] ( i'm trying to switch from appfuse framework and like the Seam concept very much).

Jarek


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

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



More information about the jboss-user mailing list