Yep. There was a bug in cactus 1.5b1 where the setUp() method was not called if you were using ServletTestSuite (instead of extending ServletTestCase). It has been fixed in CVS.
Thanks -Vincent > -----Original Message----- > From: J. B. Rainsberger [mailto:[EMAIL PROTECTED] > Sent: 21 October 2003 00:04 > To: [EMAIL PROTECTED] > Subject: Cactus and DBUnit tests > > Everyone: > > I am trying to use DBUnit and Cactus together to test an entity bean in > a live container. > > PROBLEM. The CLEAN_INSERT operation that DBUnit is supposed to perform > in setUp() does not occur. > > FAILURE. When my entity bean tries to create a new order, an order > already exists with that ID, having not been cleaned up during test case > setup. > > QUESTION. Is something causing my setUp() not to be invoked on the > server side? I had other, related problems: when I obtain the EJB home > in setUp(), that appears to be null when the test executes. I suspect > there is a larger problem that my test fixture is not being set up, I > guess, on the server side. > > INFO. If I run the test locally (that is, not with Cactus), everything > works. > > PLATFORM. JBoss 3.2.2rc4, Cactus 1.5b1, DBUnit 1.5.5, Windows 2000. > > I have attached the source of my test, in case you find it helpful. You > will notice that I have hardcoded my data set in the test to avoid > problems due to being unable to load a file from disk. > > Thanks for any help you can provide. > > --------------------------------------------------------------------- > package junit.cookbook.coffee.model.ejb.test; > > import java.io.StringReader; > import java.rmi.RemoteException; > import java.sql.*; > > import javax.ejb.FinderException; > import javax.naming.*; > import javax.rmi.PortableRemoteObject; > import javax.sql.DataSource; > > import junit.cookbook.coffee.model.ejb.*; > import junit.framework.Test; > > import org.apache.cactus.ServletTestSuite; > import org.dbunit.DatabaseTestCase; > import org.dbunit.database.*; > import org.dbunit.dataset.IDataSet; > import org.dbunit.dataset.xml.FlatXmlDataSet; > import org.dbunit.operation.DatabaseOperation; > > import com.diasparsoftware.jdbc.JdbcResourceRegistry; > import com.mimer.jdbc.MimerDataSource; > > public class AddOrderTest extends DatabaseTestCase { > private JdbcResourceRegistry jdbcResourceRegistry; > private MimerDataSource dataSource; > private OrderHome home; > > public AddOrderTest(String name) { > super(name); > } > > protected IDatabaseConnection getConnection() throws Exception { > Connection connection = makeJdbcConnection(); > return new DatabaseConnection(connection); > } > > protected IDataSet getDataSet() throws Exception { > return new FlatXmlDataSet( > new StringReader( > "<?xml version=\"1.0\" ?>" > + "<dataset>" > + "<people.customer customerId=\"762\" name=\"J. B. > Rainsberger\" />" > + "<orders.orders />" > + "</dataset>")); > } > > public void testCreateEmptyOrder() throws Exception { > Context rootContext = new InitialContext(); > Object homeAsObject = rootContext.lookup("ejb/Order"); > > home = > (OrderHome) PortableRemoteObject.narrow( > homeAsObject, > OrderHome.class); > > home.create(new Integer(001), new Integer(762)); > assertOrderExists(001, 762); > } > > private void assertOrderExists(int orderId, int customerId) > throws FinderException, RemoteException { > > Order newOrder = home.findByPrimaryKey(new Integer(orderId)); > assertEquals(new Integer(customerId), newOrder.getCustomerId()); > } > > protected void setUp() throws Exception { > System.setProperty("dbunit.qualified.table.names", "true"); > jdbcResourceRegistry = new JdbcResourceRegistry(); > super.setUp(); > } > > protected void tearDown() throws Exception { > jdbcResourceRegistry.cleanUp(); > super.tearDown(); > } > > private DataSource getDataSource() { > if (dataSource == null) { > dataSource = new MimerDataSource(); > dataSource.setDatabaseName("coffeeShopData"); > dataSource.setUser("admin"); > dataSource.setPassword("adm1n"); > } > > return dataSource; > } > > private Connection makeJdbcConnection() throws SQLException { > Connection connection = getDataSource().getConnection(); > jdbcResourceRegistry.registerConnection(connection); > return connection; > } > > public static Test suite() { > return new ServletTestSuite(AddOrderTest.class); > } > } > > -- > J. B. Rainsberger, > Diaspar Software Services > http://www.diasparsoftware.com :: +1 416 791-8603 > Let's write software that people understand > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
