I use Derby. From my experience it is the most "serious" choice out of all in-memory Java databases. HSQL/H2 left a bad aftertaste from the days when we used it for the Modeler preferences. Though this may not be relevant in the context of unit tests.
Beyond that, I use bootique-jdbc-test / bootique-cayenne-test to manage DB lifecycle, datasets and assertions. There may be a lot of overlap with DBUnit, but if you are on Bootique, it integrates very nicely with the existing app configs, Cayenne models, etc. It supports loading data from CSVs, comparing DB state with CSV, referencing tables by mapped Cayenne classes, etc. There not much documentation as of yet, but here is a small random example: @ClassRule public static BQTestFactory TEST_FACTORY = new BQTestFactory(); private static CayenneTestDataManager DATA_MANAGER; @BeforeClass public static void beforeClass() { BQRuntime app = TEST_FACTORY .app("-s", "-c", "classpath:config.yml") .autoLoadModules() .createRuntime(); app.run(); DATA_MANAGER = CayenneTestDataManager.builder(app) .doNotDeleteData() .entitiesAndDependencies(E1.class, E2.class, E3.class) .build(); DATA_MANAGER.getTable(E1.class).csvDataSet().load("classpath:e1.csv").persist(); } @Test public void testXyz() { // send some requests; check the data in DB... Table e1 = DATA_MANAGER.getTable(E1.class); e1.matcher().assertMatches(4); } Andrus > On May 2, 2018, at 10:59 PM, Ken Anderson <ken.ander...@amphorainc.com> wrote: > > All, > > We’re thinking about setting up an in-memory database in place of SQL Server > for doing unit tests. Does anyone have any experience doing this with > Cayenne? Any recommendations or warnings? > > Thanks, > Ken