Selenium测试后的数据库清理

Joh*_*nak 1 java selenium spring hibernate selenium-webdriver

在我使用Maven运行一堆Selenium(jUnit4)测试之后,我想做一个数据库清理(删除他们插入的东西等).这是在Tapestry/Spring/Hibernate上运行的旧项目和遗留数据库.我想用一个带@After注释的方法进行清理- 但注入DAO的/ Managers/SessionFactory不起作用.

测试是这样的:我mvn jetty:run-war在一个控制台中运行()应用程序,并在另一个控制台(mvn test)中启动测试- 它访问localhost:8080上的应用程序.

ora*_*ips 6

几种可能的方法:

  1. 使用dbunit,它旨在将数据库返回到测试之间的已知状态.
  2. 使用try{} finally{}最终回滚事务的块在数据库事务中包装每个测试.
  3. 严格使用数据库进行测试,不要担心.每次使测试创建唯一标识/命名值,这样您就不会发生冲突,但不会采取任何操作.

  • +1我使用策略3(有时候是策略2),但是有很多关于它的争论.您无法始终保证将系统恢复到其原始状态(例如,如果您有一个提交事务的业务方法,并且您需要对其进行测试,如果您的程序在提交后但在清理代码之前崩溃,那么您已经有了数据库中的垃圾).鉴于您有时可能在数据库中存在垃圾,您必须使用测试数据库,然后您可以放松并节省编写任何清理代码的时间. (2认同)
  • 战略+1.为什么担心试验台? (2认同)