2013-04-26 82 views
0

我们运行junit测试来测试我们的java代码库。每个测试都会读/写一些数据到一个mysql数据库(可能有多个表)。看起来,这些测试留下的数据会干扰在它之后运行的测试。是否有可能在每次单元测试结束时放弃/回滚测试所做的所有更改?在java中回滚嵌套事务

我们使用仙人掌框架在glassfish应用服务器上测试ejbs。 ejbs可以调用可以读取/写入数据库的AS中的代码。

我们使用hibernate和jdbc与数据库进行通信。

+0

是你的应用程序的三层应用程序(控制器,服务和道数,即)?你用什么来访问数据库(hibernate,jpa,jdbc)? – 2013-04-26 21:10:17

+0

你如何管理交易? HibernateTransactionManager或Container JTA? – 2013-04-26 21:31:47

+0

Mysql事务处理:http://dev.mysql.com/doc/refman/5.0/en/commit.html – 2013-04-26 21:37:03

回答

0

一个可能的解决办法是用一个简单的数据库脚本你可以每次测试运行后,每次测试后重设数据库,但这消耗的时间了很多。

如果您正在运行集成测试,那么您将使用真正的EJB,对此无能为力,因为在测试开始和结束时让他们理解起来会很复杂。对于一个简单的操作,你可以强制一个异常来引起回滚,但是如果你在单个测试中使用多于一个事务,这将不起作用。