2011-01-13 146 views
1

当我使用Maven运行一堆Selenium(jUnit4)测试后,我想要做一个数据库清理(删除它们插入的东西等)。这是一个在Tapestry/Spring/Hibernate上运行的旧项目和一个遗留数据库。我想在@After注释的方法中进行清理 - 但注入DAO/Managers/SessionFactory不起作用。测试如下:我在一个控制台中运行(mvn jetty:run-war)应用程序,然后在另一个控制台(mvn test)中启动测试 - 它访问localhost:8080上的应用程序。Selenium测试后的数据库清理

+0

你可以看看这个问题:http://stackoverflow.com/questions/82949/before-and-after-suite-execution-hook-in-junit- 4-x – sblundy 2011-01-13 14:09:28

+0

您在寻找如何解决您的问题的提示:“但注入DAO/Managers/SessionFactory不起作用。”或者通过其他方式来设置和重置您的测试数据? – Ralph 2011-01-13 17:54:34

回答

6

几种可能的方法:

  1. 使用dbunit,其目的是将数据库恢复到测试之间一个已知的状态。
  2. 使用try{} finally{}块在数据库事务中包装每个测试,最终回滚事务。
  3. 严格使用数据库进行测试,不用担心。让您的测试每次创建唯一标识/命名的值,这样您就不会发生冲突,否则不会采取任何行动。
0

我宁愿用

@Transactional

anotation上述方法的声明。它在每次测试后都会运行回滚。这对我来说可以。

例如:

@Test 
@Transactional 
public void simpleTest(){  
    // your logic here  
}