Hi All,

I am trying to write a bunch of tests with JUNIT for my JDO classes.

The package works when integrated in a appengine web application, but
I get a RunTimeException when testing in a Junit 'environment'.


I started with the JDODataSourceConfigTest source file in the
appengine test directory.
and It's ok with nothing included.

Then I tried to store some data within the two methods implemented:

 public void testTransactionalPMF() {
    JDOPersistenceManagerFactory pmf = (JDOPersistenceManagerFactory)
JDOHelper
        .getPersistenceManagerFactory("transactional");
    DatastoreManager storeMgr = (DatastoreManager) pmf.getStoreManager
();
    JDOPersistenceManager pm = (JDOPersistenceManager)
pmf.getPersistenceManager();
    // assertTrue(storeMgr.connectionFactoryIsTransactional());

    DomainGAE domain = new DomainGAE("Name", "Description");

    Transaction tx = pm.currentTransaction();
    try {
      tx.begin();
      pm.makePersistent(domain);
      tx.commit();
    } catch (Exception e) {
      System.out.println("Exception e: " + e);
      e.printStackTrace();

      if (tx != null) {
        tx.rollback();
      }
    }

    pm.close();
    pmf.close();
  }

-------------------------------

DomainGAE  is a simple Class

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import ....

@PersistenceCapable(table = "domain", detachable = "true")
public class DomainGAE implements Domain {
  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Key id;

  protected String name = null;
  protected String description = null;

  public DomainGAE(String name, String description) {
    this.name = name;
    this.description = description;
  }

.....
}


Here is the error and the stackTrace:
Exception e: java.lang.RuntimeException: Unable to replace
JPACallbackHandler.
java.lang.RuntimeException: Unable to replace JPACallbackHandler.
        at
org.datanucleus.store.appengine.DatastorePluginRegistry.getExtensionPoint
(DatastorePluginRegistry.java:67)
        at org.datanucleus.plugin.PluginManager.getExtensionPoint
(PluginManager.java:65)
        at
org.datanucleus.plugin.PluginManager.getConfigurationElementForExtension
(PluginManager.java:113)
        at org.datanucleus.plugin.PluginManager.getAttributeValueForExtension
(PluginManager.java:230)
        at org.datanucleus.ObjectManagerImpl.getCallbackHandler
(ObjectManagerImpl.java:3804)
        at org.datanucleus.state.AbstractStateManager.getCallbackHandler
(AbstractStateManager.java:160)
        at
org.datanucleus.state.JDOStateManagerImpl.initialiseForPersistentNew
(JDOStateManagerImpl.java:466)
        at
org.datanucleus.state.StateManagerFactory.newStateManagerForPersistentNew
(StateManagerFactory.java:151)
        at org.datanucleus.ObjectManagerImpl.persistObjectInternal
(ObjectManagerImpl.java:1297)
        at org.datanucleus.ObjectManagerImpl.persistObject
(ObjectManagerImpl.java:1175)
        at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
(JDOPersistenceManager.java:669)
        at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
(JDOPersistenceManager.java:694)
        at
com.golvanig.projteam.JDODataSourceConfigTest.testNonTransactionalPMF
(JDODataSourceConfigTest.java:65)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at junit.framework.TestCase.runTest(TestCase.java:168)
        at junit.framework.TestCase.runBare(TestCase.java:134)
        at junit.framework.TestResult$1.protect(TestResult.java:110)
        at junit.framework.TestResult.runProtected(TestResult.java:128)
        at junit.framework.TestResult.run(TestResult.java:113)
        at junit.framework.TestCase.run(TestCase.java:124)
        at junit.framework.TestSuite.runTest(TestSuite.java:232)
        at junit.framework.TestSuite.run(TestSuite.java:227)
        at org.junit.internal.runners.JUnit38ClassRunner.run
(JUnit38ClassRunner.java:83)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute
(JUnit4TestSet.java:62)
        at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet
(AbstractDirectoryTestSuite.java:140)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute
(AbstractDirectoryTestSuite.java:127)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess
(SurefireBooter.java:345)
        at org.apache.maven.surefire.booter.SurefireBooter.main
(SurefireBooter.java:1009)
Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.104
sec <<< FAILURE!


I did the test with maven and also directly with junit by providing
the lib from 1.2.8
Results are the same.


I tried to extends JDODataSourceConfigTest from LocalServiceTestCase
or LocalDatastoreTestCase (http://code.google.com/appengine/docs/java/
howto/unittesting.html)
but I got the same error.

I am sure I forgot something, but I can't figure what.

Does anyone has an hint?
Thanks

--

You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.


Reply via email to