Ula Krukar
Ula Krukar

Reputation: 13019

DbUnit: problem with increment id generation

I am using DbUnit together with Unitils, which works great most of the time.

Today I found a strange problem.

Situation is:

<id name="Id">
   <generator class="increment"/>
</id>

This is all OK and I get why this is like that. It is a problem from maintenance perspective though. If I ever add third test method between the two, method test2 will suddenly fail even though nothing changed, just because row will get different id.

Is there anyway I can force DbUnit or Hibernate to calculate next id value before each test method?

Upvotes: 2

Views: 3408

Answers (2)

Adeel Ansari
Adeel Ansari

Reputation: 39907

First thing, you should provide the complete dataset, yes with id as well. If not, don't test or base your test upon ids. Why not test? because its already well tested and reliable thing. Always remember never test third party libraries, most of them already well tested. But it seems quite impossible to not depending upon ids. I agree, you should write some mock class to tackle this issue for you, or may be you can provide some setter method to overwrite the value generated by your own.

Second option is always start your test case with empty table. You can write a fixture to clean the table for you, before every test case.

Upvotes: 3

Bozho
Bozho

Reputation: 597382

The solution is not to rely on generated ids:

  • they are outside the control of your test.
  • if you make them controlled by the test, you are no longer testing the class-under-test

Upvotes: 3

Related Questions