首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nhibernate Nunit -测试用例之间的清除数据库

Nhibernate Nunit -测试用例之间的清除数据库
EN

Stack Overflow用户
提问于 2010-11-16 18:57:56
回答 4查看 836关注 0票数 2

我们有一个相当广泛的测试套件,需要永远执行。每次测试完成后,数据库(MSSQL)都需要清空,以便为下一个测试用例刷新。我们做到这一点的方法是临时删除所有外键,截断所有表,然后重新添加FK。

根据NHProfiler的说法,这一步需要2-3秒。所有的时间似乎都花在了FK操作上。

我们目前的方法显然不是最优的,但是我们应该走哪条路来提高性能呢?与FK移除/添加的操作数量相比,从数据库中实际删除的元素数量完全无关紧要。

不能选择使用内存中的SQLite数据库,因为测试中的代码使用特定于MSSQL的操作。

EN

回答 4

Stack Overflow用户

发布于 2010-11-16 19:02:25

您可以将所有内容包装在一个事务中,最后只需回滚所有内容。我就是这么做的。它还允许并行运行测试。

票数 0
EN

Stack Overflow用户

发布于 2010-11-16 20:50:43

使用SQL Server Compact如何,使用nhibernate schema从映射文件创建数据库,并为每个测试加载数据。如果你谈论的是微不足道的数据量。

看看这篇博文- Using SQL Server Compact Edition for Unit testing

或者,您可以使用Fluent Migrator创建数据库模式并加载每个测试的数据。

票数 0
EN

Stack Overflow用户

发布于 2010-11-16 21:06:23

为什么要在测试中使用DB呢?你当然应该嘲笑持久化机制?除非您真的在尝试测试这部分功能,否则您实际上是在浪费时间和资源来插入/更新/删除数据。

您的测试依赖于ms sql细节和返回的数据这一事实暗示了您的体系结构需要查看的可能性。

我并不想在这里听起来很粗鲁--我只是很惊讶没有其他人在这件事上跟你搭讪。

w://

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4193420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档