Author Login
Post Reply
I have since realized that this problem has nothing to do with DBUnit. I was
trying to test an inheritance hierarchy with openJPA and that is failing.
I have added to a separate post that already mentions a similar issue with
version 1.1.0
devu213 wrote:
>
> I'm really having problems trying to make openJPA work with DBUnit. Here
> is a snippet of my test class. The moment I have a situation where DBUnit
> does some sort of initializing operations on the database, openJPA starts
> behaving really strangely. Specifically the second test method which uses
> inheritance fails to fire a query for the bae class.
>
> The moment I stop using DBUnit, everything starts working fine and openJPA
> fires the queries for the base class and derived class in the proper
> order.
>
> I've tried using two separate connections for DBUnit and openJPA and then
> finally passing a connection from openJPA to DBUnit.
>
> I really don't understand what is going wrong....Can someone please give
> me some pointers?
>
>
> public class BaseDAOTest extends BaseDBUnitTestCase {
>
> @Override
> protected DatabaseOperation getSetUpOperation() {
> return DatabaseOperation.DELETE;
> //return DatabaseOperation.NONE; //This
> works....
>
> }
>
> @Override
> protected IDataSet getDataSet() throws Exception {
> return new FlatXmlDataSet(
> ClassLoader.getSystemResourceAsStream("BaseDAOTestClean.xml"));
> }
>
> protected IDataSet getDataSet(String datasetName) throws Exception {
> return new FlatXmlDataSet(
> ClassLoader.getSystemResourceAsStream(datasetName));
> }
>
>
> public void testCreate() {
> System.out.println("testCreate");
> EntityManager manager = null;
> Customer customer = new Customer(new Double(123), new Double(123),
> new String("DK1"), new Date(), new Date(),
> new Date(), "KMD", new Date());
> Customer anotherCustomer = new Customer(new Double(124), new
> Double(124),
> new String("DK2"), new Date(), new Date(),
> new Date(), "ATP", new Date());
> try {
> //Invocations to the processing logic
> manager = PersistenceBootstrapper.getEntityManager();
> EntityTransaction tx = manager.getTransaction();
> tx.begin();
> BaseDAO.create(manager, customer);
> BaseDAO.create(manager, anotherCustomer);
> tx.commit();
>
> //Do the asserts... Result verification.
> ITable addedData = getConnection().createQueryTable(
> "customer",
> "select pbs_no, cvr_no, postal_cd," +
> " update_by from customer where" +
> " pbs_no in (123, 124) order by pbs_no");
> Assertion.assertEquals(getDataSet("BaseDAOTest1.xml"),
> new DefaultDataSet(addedData));
> } catch (Exception e) {
> e.printStackTrace();
> assertEquals("Failed", "Normal flow failed for BaseDAOTest",
> e.getMessage());
> } finally {
> //Do this instead of closing the manager directly on your own.
> manager.close();
> }
> }
>
>
> public void testCreateInheritance() {
> System.out.println("testInheritacne");
> //EntityManagerFactory factory =
> Persistence.createEntityManagerFactory("refimpl-nocontainer");
> EntityManager manager = null;
> Creditor creditor = new Creditor(new Double(125), new Double(125),
> "DK3", new Date(), new Date(), new Date(), "PROG", new Date());
> try {
> //Note the new dataset
> IDataSet expectedDataset = getDataSet("BaseDAOTest2.xml");
>
> //Invocations to the processing logic
> manager = PersistenceBootstrapper.getEntityManager();
> EntityTransaction transaction = manager.getTransaction();
> transaction.begin();
> BaseDAO.create(manager, creditor);
> transaction.commit();
>
> //Do the asserts... Result verification.
> //Note the way the actual dataset is created.
> QueryDataSet actual = new QueryDataSet(getConnection());
> actual.addTable("customer", "select pbs_no, cvr_no, " +
> "postal_cd, update_by from customer where" +
> " pbs_no = 125");
> actual.addTable("creditor", "select pbs_no, cred_type, " +
> "billing_type, update_by from creditor where" +
> " pbs_no = 125");
>
> //compare with expected dataset.
> Assertion.assertEquals(actual, expectedDataset);
> } catch (Exception e) {
> e.printStackTrace();
> assertEquals("Failed", "Normal flow failed for BaseDAOTest",
> e.getMessage());
> } finally {
> //Do this instead of closing the manager directly on your own.
> //PersistenceBootstrapper.closeManager();
> manager.close();
> }
> }
>
>
>
> public void testCreateManyToOne() {
> System.out.println("manytoone");
> EntityManager manager = null;
>
> Creditor creditor = new Creditor(new Double(126), new Double(126),
> "DK3", new Date(), new Date(), new Date(), "PROG", new Date());
>
> Country creditorsCountry = new Country("DK", "Denmark", "PROG");
>
>
> try {
>
> IDataSet dataset = new FlatXmlDataSet(
> ClassLoader.getSystemResourceAsStream("BaseDAOTestClean.xml"));
>
> //Invocations to the processing logic
> manager = PersistenceBootstrapper.getEntityManager();
> EntityTransaction transaction = manager.getTransaction();
> transaction.begin();
> BaseDAO.create(manager, creditor);
> creditor.setCountry(creditorsCountry);
> transaction.commit();
>
> //Do the asserts... Result verification.
> QueryDataSet actual = new QueryDataSet(getConnection());
> actual.addTable("customer", "select pbs_no, cvr_no, " +
> "postal_cd, update_by from customer where" +
> " pbs_no = 125");
> actual.addTable("creditor", "select pbs_no, cred_type, " +
> "billing_type, update_by from creditor where" +
> " pbs_no = 125");
> actual.addTable("country_master", "select country_cd, country, " +
> "update_by from country_master where country_cd = \'DK\'");
>
> Assertion.assertEquals(actual, dataset);
> } catch (Exception e) {
> e.printStackTrace();
> assertEquals("Failed", "Normal flow failed for BaseDAOTest",
> e.getMessage());
> } finally {
> //Do this instead of closing the manager directly on your own.
> //PersistenceBootstrapper.closeManager();
> manager.close();
> }
> }
> }
> http://n2.nabble.com/file/n723864/src.zip src.zip
>
--
Sent from the OpenJPA Users mailing list archive at Nabble.com.