[jboss-user] [JBoss Seam] - doubts with embedded-ejb testNGs

nico.ben do-not-reply at jboss.com
Thu Feb 1 10:44:21 EST 2007


Hi!
I still have problems running a testNG, after reading docs, forum and wiki. So I bother you with my questions, sorry :)

I just created with seam-gen  (seam1.1.5) a project with a reversed from postgres db class (User.java)

Included libs are the ones seam-gen includes. 

In my classpath (following the instruction from booking example) I have:

  | src
  | resources
  | test
  | embedded-ejb/conf
  | 
  | 
  | In test folder I have the following test:
  | 
  | 
  |   | import [...]
  |   | public class UserTest extends SeamTest {
  |   | 
  |   | 	@Test
  |   | 	public void testUser() throws Exception
  |   | 	{
  |   | 		EntityManager em = entityManagerFactory.createEntityManager();
  |   | 		em.getTransaction().begin();
  |   | 
  |   | 		User user = new User();
  |   | 		user.setName("AAAA");
  |   | 
  |   | 		em.close();
  |   | 	}
  |   | 
  |   | 	private EntityManagerFactory entityManagerFactory;
  |   | 
  |   | 	public EntityManagerFactory getEntityManagerFactory()
  |   | 	{
  |   | 		return entityManagerFactory;
  |   | 	}
  |   | 
  |   | 	@Configuration(beforeTestClass=true)
  |   | 	public void init()
  |   | 	{
  |   | 		entityManagerFactory = Persistence.createEntityManagerFactory("myprojectEntityManagerFactory");
  |   | 	}
  |   | 
  |   | 	@Configuration(afterTestClass=true)
  |   | 	public void destroy()
  |   | 	{
  |   | 		entityManagerFactory.close();
  |   | 	}	  
  |   | }
  |   | 
  |   | 
  | 
  | 
  | My persistence-test.xml is:  
  | 
  | 
  |   | <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="myproject">
  |   |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |   |       <jta-data-source>java:/myprojectTestDatasource</jta-data-source>
  |   |       <properties>
  |   |          <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
  |   |          <property name="hibernate.show_sql" value="true"/>
  |   |          <property name="jboss.entity.manager.factory.jndi.name" value="java:/myprojectEntityManagerFactory"/>
  |   |       </properties>
  |   |    </persistence-unit>
  |   |     
  |   | </persistence>
  |   | 
  | 
  | And embedded-jboss-beans.xml is 
  | 
  |   | <?xml version="1.0" encoding="UTF-8"?>
  |   | 
  |   | <deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |   |             xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
  |   |             xmlns="urn:jboss:bean-deployer">
  |   |    <bean name="Naming" class="org.jnp.server.SingletonNamingServer"/>
  |   | 
  |   |    <bean name="InitialContextProperties" class="java.util.Hashtable">
  |   |       <constructor>
  |   |       <parameter class="java.util.Map">
  |   |             <map keyClass="java.lang.String" valueClass="java.lang.String">
  |   |                <entry>
  |   |                   <key>java.naming.factory.initial</key>
  |   |                   <value>org.jnp.interfaces.LocalOnlyContextFactory</value>
  |   |                </entry>
  |   |                <entry>
  |   |                    <key>java.naming.factory.url.pkgs</key>
  |   |                    <value>org.jboss.naming:org.jnp.interfaces</value>
  |   |                </entry>
  |   |             </map>
  |   |       </parameter>
  |   |       </constructor>
  |   |    </bean>
  |   | 
  |   |    <bean name="java:comp/Initializer" class="org.jboss.ejb3.embedded.JavaCompInitializer">
  |   |       <property name="jndiProperties"><inject bean="InitialContextProperties"/></property>
  |   |    </bean>
  |   | 
  |   |    <bean name="XidFactory" class="org.jboss.tm.XidFactoryImpl"/>
  |   | 
  |   |    <bean name="XidFactoryMBean" class="org.jboss.ejb3.embedded.XidFactoryMBean">
  |   |       <constructor>
  |   |          <parameter class="org.jboss.tm.XidFactoryBase">
  |   |             <inject bean="XidFactory"/>
  |   |          </parameter>
  |   |       </constructor>
  |   |    </bean>
  |   | 
  |   |    <bean name="TransactionManagerInitializer" class="org.jboss.tm.TransactionManagerInitializer">
  |   |       <property name="xidFactory"><inject bean="XidFactory"/></property>
  |   |       <property name="initialContextProperties"><inject bean="InitialContextProperties"/></property>
  |   |    </bean>
  |   | 
  |   |    <bean name="UserTransaction" class="org.jboss.ejb3.embedded.UserTransactionImpl">
  |   |       <demand>TransactionManagerInitializer</demand>
  |   |    </bean>
  |   | 
  |   |    <bean name="UserTransactionBinding" class="org.jboss.ejb3.embedded.JndiBinder">
  |   |       <property name="jndiProperties"><inject bean="InitialContextProperties"/></property>
  |   |       <property name="target"><inject bean="UserTransaction"/></property>
  |   |       <property name="bindTo">UserTransaction</property>
  |   |       <property name="serializable">false</property>
  |   |    </bean>
  |   | 
  |   | 
  |   |    <bean name="TransactionManager" class="java.lang.Object">
  |   |       <constructor factoryMethod="getTransactionManager">
  |   |          <factory bean="TransactionManagerInitializer"/>
  |   |       </constructor>
  |   |    </bean>
  |   |    <bean name="CachedConnectionManager" class="org.jboss.resource.connectionmanager.CachedConnectionManagerReference">
  |   |       <property name="transactionManager"><inject bean="TransactionManager"/></property>
  |   |    </bean>
  |   | 
  |   |    <!--
  |   |       <bean class="org.jboss.jdbc.HypersonicDatabase"
  |   |         name="jboss:service=Hypersonic,database=localDB">
  |   |         <property name="database">localDB</property>
  |   |         <property name="inProcessMode">true</property>
  |   |         <property name="dbDataDir">.</property>
  |   |       </bean>
  |   |    -->
  |   | 
  |   |    <bean name="DefaultDSBootstrap" class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource">
  |   |       <property name="driverClass">org.hsqldb.jdbcDriver</property>
  |   |       <property name="connectionURL">jdbc:hsqldb:.</property>
  |   |       <!--      <property name="connectionURL">jdbc:hsqldb:./hypersonic/localDB</property> -->
  |   |       <property name="userName">sa</property>
  |   |       <property name="jndiName">java:/DefaultDS</property>
  |   |       <property name="minSize">0</property>
  |   |       <property name="maxSize">10</property>
  |   |       <property name="blockingTimeout">1000</property>
  |   |       <property name="idleTimeout">100000</property>
  |   |       <property name="transactionManager"><inject bean="TransactionManager"/></property>
  |   |       <property name="cachedConnectionManager"><inject bean="CachedConnectionManager"/></property>
  |   |       <property name="initialContextProperties"><inject bean="InitialContextProperties"/></property>
  |   |    </bean>
  |   | 
  |   |    <bean name="DefaultDS" class="java.lang.Object">
  |   |       <constructor factoryMethod="getDatasource">
  |   |          <factory bean="DefaultDSBootstrap"/>
  |   |       </constructor>
  |   |    </bean>
  |   | 
  |   | 
  |   | </deployment>
  |   | 
  | 
  | WEB-INF/Components.xml is:
  | 
  |   | <?xml version="1.0" encoding="UTF-8"?>
  |   | <components xmlns="http://jboss.com/products/seam/components"
  |   |             xmlns:core="http://jboss.com/products/seam/core"
  |   |             xmlns:drools="http://jboss.com/products/seam/drools"
  |   |             xmlns:security="http://jboss.com/products/seam/security"
  |   |             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |   |             xsi:schemaLocation=
  |   |                 "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.1.xsd 
  |   |                  http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.1.xsd
  |   |                  http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.1.xsd
  |   |                  http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.1.xsd">
  |   | 
  |   |    <core:init debug="true" jndi-pattern="@jndiPattern@"/>
  |   |      
  |   |    <core:manager concurrent-request-timeout="500" 
  |   |                  conversation-timeout="120000" 
  |   |                  conversation-id-parameter="cid" 
  |   |                  conversation-is-long-running-parameter="clr"/>
  |   |     
  |   |    <core:pages no-conversation-view-id="/home.xhtml"/>
  |   |    
  |   |    <core:managed-persistence-context name="entityManager"
  |   |                persistence-unit-jndi-name="java:/myprojectEntityManagerFactory"/>
  |   | 
  |   |    <core:ejb installed="@embeddedEjb@"/>
  |   |    
  |   |    <drools:rule-base name="securityRules">
  |   |        <drools:rule-files><value>/security.drl</value></drools:rule-files>
  |   |    </drools:rule-base>
  |   | 
  |   |    <security:identity authenticate-method="#{authenticator.authenticate}"/>
  |   |          
  |   | </components>
  |   | 
  | 
  | 
  | When I run my test I get the following:
  | anonymous wrote : 
  |   | ===============================================
  |   | myproject
  |   | Total tests run: 0, Failures: 0, Skips: 0
  |   | ===============================================
  |   | 
  |   | org.testng.TestNGException: 
  |   | Cannot find class in classpath: UserTest
  |   | 	at org.testng.xml.XmlClass.getSupportClass(XmlClass.java:45)
  |   | 	at org.testng.internal.Utils.xmlClassesToClasses(Utils.java:82)
  |   | 	at org.testng.TestRunner.initMethods(TestRunner.java:252)
  |   | 	at org.testng.TestRunner.init(TestRunner.java:198)
  |   | 	at org.testng.TestRunner.init(TestRunner.java:168)
  |   | 	at org.testng.TestRunner.(TestRunner.java:135)
  |   | 	at org.testng.remote.RemoteTestNG$1.newTestRunner(RemoteTestNG.java:102)
  |   | 	at org.testng.remote.RemoteTestNG$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG.java:152)
  |   | 	at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:457)
  |   | 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:212)
  |   | 	at org.testng.SuiteRunner.run(SuiteRunner.java:168)
  |   | 	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:987)
  |   | 	at org.testng.TestNG.runSuitesLocally(TestNG.java:951)
  |   | 	at org.testng.TestNG.run(TestNG.java:719)
  |   | 	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
  |   | 	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:122)
  |   | 
  | 
  | 
  | 
  | My doubts are:
  | 
  | 1) In UserTest.java is it correct to refer to myprojectEntityManagerFactory (mentioned in persistence.xml and components.xml) ?
  | anonymous wrote : entityManagerFactory = Persistence.createEntityManagerFactory("myprojectEntityManagerFactory");
  | 
  | 2) embedded-jboss-beans.xml  has a DefaultDS that uses hsqldb.....do I have to modify it to postgres datasource? or HSQLDB is used during tests independently by any other database I use ?
  | 
  | 3) Why do I obtain a "Cannot find class in classpath" error when my java file is in the classpath?
  | 
  | Thank you in advance,
  | Nico

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

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



More information about the jboss-user mailing list