Reputation: 13019
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>
test1
and test2
, each adding one row in this table.test1
method newly added row has id=6.test2
method newly created row has id=7.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
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 id
s. 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
Reputation: 597382
The solution is not to rely on generated ids:
Upvotes: 3