Database cleanup after Selenium tests
-
10-10-2019 - |
Question
After I run a bunch of Selenium (jUnit4) tests using Maven, I'd like to do a database clean-up (remove things they inserted etc). It's an older project running on Tapestry/Spring/Hibernate and a legacy database. I'd like to do the clean up in an @After
annotated method - but injecting of DAO's/Managers/SessionFactory doesn't work.
The testing goes like this: I run (mvn jetty:run-war
) the app in one console, and start the testing in another console (mvn test
) - it accesses the app on localhost:8080.
Solution
Several possible approaches:
- Use dbunit, which is designed to return a database to a know state between tests.
- Wrap each test in a database transaction with a
try{} finally{}
block where the finally rolls back the transaction. - Use a database strictly for testing and don't worry about it. Make your tests create uniquely identified / named values each time so you don't have conflicts, but otherwise don't take any action.
OTHER TIPS
I would rather use
@Transactional
anotation above method declaration. It runs rollback after each test. It works fine for me.
For example:
@Test
@Transactional
public void simpleTest(){
// your logic here
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow