【问题标题】:Is it possible to restore a database at the end of every NUnit test?是否可以在每次 NUnit 测试结束时恢复数据库?
【发布时间】:2015-03-10 06:43:09
【问题描述】:

我正在使用 C#、NUnit 和 Selenium WebDriver 编写一些 UI 自动化测试脚本。我想知道是否可以在每次测试结束时恢复数据库(例如通过 TearDown 方法),如果可以,我该如何实现。

我尝试关注thisthis,但它们似乎不起作用。我猜这是因为我没有从测试脚本本身执行任何与数据库相关的操作?

【问题讨论】:

  • 你在使用事务吗? yiou 可能应该在测试开始时打开一个事务,然后在结束时回滚。其他选项是模拟数据库将查询写入日志并使用来自数据库的典型预期结果进行回复。我认为除非使用虚拟数据库,否则我认为没有正确的方法可以通过网络界面进行
  • 两个链接的例子都使用了SqlTransaction,所以我也使用了它。

标签: c# selenium selenium-webdriver nunit ui-automation


【解决方案1】:

您可以使用TransactionScope

using (TransactionScope scope = new TransactionScope())
{
      //your code goes here
}

请记住,auto_increment 计数器值不会回滚。

【讨论】:

  • 我也尝试过使用 TransactionScope。
【解决方案2】:

我建议您在 DAL 层创建 Fakes,这样您每次运行时始终使用相同的数据,而不必担心与数据库的实时连接。如果您需要更多详细信息,我在http://blog.dmbcllc.com/automated-web-application-functional-testing/ 写了一些关于总体思路的内容。

【讨论】:

  • 我本身并没有 DAL。毕竟这是 UI 自动化,我无权访问应用程序的源代码。
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多