加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 集成(Selenium)测试后回滚数据库

发布时间:2020-12-12 06:51:51 所属栏目:MsSql教程 来源:网络整理
导读:有没有人对通过集成测试框架(如Selenium)进行回滚数据库事务的最佳实践或首选方式有任何建议? 这是我们目前的情况:我们有一个.net web项目,其中包含许多单元测试,它们在我们的单元测试环境中运行良好 – 每个测试都继承了一个在[SetUp]中打开事务的父类,并
有没有人对通过集成测试框架(如Selenium)进行回滚数据库事务的最佳实践或首选方式有任何建议?

这是我们目前的情况:我们有一个.net web项目,其中包含许多单元测试,它们在我们的单元测试环境中运行良好 – 每个测试都继承了一个在[SetUp]中打开事务的父类,并回滚了事务. [TearDown].每次测试后,我们的单元测试数据库都会恢复到原始状态.

但是,一旦我们进入集成环境,事情就会发生变化.我们的持续集成服务器自动编译我们的提交并将它们推送到测试服务器,以便服务器始终运行在最新的代码上.我们还设置了一个Selenium实例来自动化用户与站点的交互. selenium测试基本上与现有的Selenium服务器通信,并告诉服务器诸如“启动浏览器并转到http://testsite/TestPage.aspx – 在id’def’的表单字段中输入文本’abc’ – 断言新页面包含文本’xyz’”

每个测试都以与我们的vanilla单元测试类似的方式运行,但有一个重要的例外:Selenium所做的任何更改都是在完全不同的线程/应用程序中完成的,因此我们不能(我认为我们不能,至少)在测试拆解时将它们卷回来.

我们还没有找到一个很好的解决方案.现在我们正处于使用SqlCommand执行sql语句来备份数据库的时刻,然后在测试结束时,我们将数据库设置为单个用户,删除当前数据库并恢复旧副本 – 这不太理想,因为它有效地杀死了附加到数据库的应用程序,并要求我们再次重新初始化应用程序.

这是一个以前解决过的问题吗?任何建议都很棒.

谢谢!

解决方法

我们在每次测试之前运行drop / create-table脚本.这非常快,并确保以前的测试不会留下任何东西.

PS:我们正在使用NHibernate,它可以动态创建这个脚本并在内存中对Sqlite运行测试,它是光速的.但是,如果我们切换到SqlServer,它仍然非常快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读