TestNG @DataProvider中的数据库更新未回滚

时间:2017-07-24 23:00:34

标签: java spring-boot testng spring-transactions testng-dataprovider

在我的自动化测试中,我想使用@DataProvider来执行一些数据库更新,以保证我将要测试的数据的状态,以及2.)返回测试数据将在这样的环境中工作。

我发现更新是在@DataProvider主体中成功完成的,然后我的测试中的更新成功,所有断言都通过,然后回滚测试更新。但是,@DataProvider更新不会回滚,并在测试完成后保留。

有没有办法回滚在@DataProvider主体内部进行的数据库更新?

1 个答案:

答案 0 :(得分:0)

你的问题与How to delete data only after all tests, based on inputs from data provider, are run?

相似

它的答案适用于你。

<强>更新

在你的情况下,@DataProvider是一个糟糕的选择。在TestNG中,您只能使用@DataProvider提供的结果,并且它们在套件之前运行。您有几种方法可以解决您的问题。

  • 创建一个将数据库事务与相关@DataProvider结果相关联的侦听器。它必须实现ITestListener。在每个测试完成事件中,您的监听器将回滚所需的事务。
  • 第二个选项与第一个选项类似,但您的@DataProvider对数据库不执行任何操作,它只提供一些输入,应由@BeforeMehtod@AfterMethod处理,更新和回滚分别。在这种情况下,所有上下文都可以存储在特定的测试类中。
  • 您还可以使用上述原则创建新注释,提供和管理您的商务实体。