Which do you late less?  :)

> On May 3, 2018, at 8:32 AM, Andrus Adamchik <[email protected]> wrote:
> 
> Hi Mike,
> 
>> Is derby entirely in memory or does it have a filesystem footprint?
> 
> It does.
> 
>> I've found that maintaining tests using standalone data files is far more
>> difficult than using helper classes to create default data sets.
> 
> Bootique tools support both types of datasets: file- and API-based, e.g. [1]. 
> And fwiw I personally hate both of them :) 
> 
> Andrus
> 
> [1] 
> https://github.com/bootique/bootique-jdbc/blob/master/bootique-jdbc-test/src/main/java/io/bootique/jdbc/test/Table.java
> 
> 
>> On May 3, 2018, at 3:26 PM, Mike Kienenberger <[email protected]> wrote:
>> 
>> As a general observation after using dbunit for 13 years, I've found
>> that maintaining tests using standalone data files is far more
>> difficult than using helper classes to create default data sets.   I
>> ended up with far too many data sets, and things were even worse if I
>> needed a test with many instances of the same entity or tests with
>> entities in complicated relationships.
>> 
>> Trying to update the data sets every time the schema changed was
>> difficult and time consuming.    That was with
>> named-key-value-property xml databases.  I would expect csv to be even
>> more difficult.
>> 
>> Switching to programically generated data has made life far easier for
>> me.   Schema changes only have to be made one place.   I can create
>> convenience methods that allow me to only specify the fields of
>> interest rather than every field, as well as create common complex
>> data relationships with a single call.   On more recent projects, I
>> now generate the default "populate every field" methods for individual
>> entities.   That breaks my convenience methods when the schema changes
>> and forces me to fix the data generation immediately while it's still
>> obvious what column has been added or removed.   It's been a
>> life-saver in this project where there are 6 other developers also
>> modifying the schema in unexpected ways.
>> 
>> Andrus,
>> 
>> Is derby entirely in memory or does it have a filesystem footprint?  I
>> remember trying to use it back when I was first looking for in-memory
>> databases, but something prevented me.  It was probably 13 or more
>> years ago, so it's very likely that whatever was wrong is no longer an
>> issues.
>> 
>> 
>> 
>> 
>> On Thu, May 3, 2018 at 3:19 AM, Andrus Adamchik <[email protected]> 
>> wrote:
>>> 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 <[email protected]> 
>>>> 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
>>> 
> 

Reply via email to