[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