I'm testing a controller that returns a json response but the tests fail after the first time because the h2 database does not reset the auto increment id. Using fixtures or creating objects manually has a same problem.
@Before
public void setUp() {
Fixtures.deleteAllModels();
Fixtures.loadModels("data.yaml");
}
How to solve this problem?
If you are using Spring, I found this blog post which suggests using @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
So that each test uses a new application context, thereby resetting the db increments.
Start your play app, fire up browser with this url (if you run play app locally):
http://localhost:9000/@db
Enter your h2 db, and type the command below and run:
ALTER TABLE <table_name> ALTER COLUMN <column_name> RESTART WITH 1
If you'd like to do this programmatically, Fixtures.executeSQL()
might be useful
For more information, check http://www.h2database.com/html/grammar.html#alter_table_alter
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With