こんな感じで、DataStoreをテストするとき、トランザクションをbeginTransactionしたままほったらかしにすると、別のテストでトランザクションなしでEntityをputしたときに怒られる模様
LocalServiceTestHelperではそこまでリセットしてくれない模様。
import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import org.junit.After; import org.junit.Before; import org.junit.Test; public class TxErrorTest { LocalServiceTestHelper handler = new LocalServiceTestHelper( new LocalDatastoreServiceTestConfig()); @Before public void setUp(){ handler.setUp(); } @After public void tearDown(){ handler.tearDown(); } @Test public void さき(){ DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); ds.beginTransaction(); ds.put(new Entity("tx")); } @Test public void あと(){ DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); //ds.beginTransaction(); //こちらでもトランザクションをはじめれば大丈夫 ds.put(new Entity("tx")); } }