我正在寻找令人满意的选项,用于单元的测试我的。净DAL类;因为他们在达尔班,他们访问数据库直接使用ADO.NET.目前,我使用的一个实例MSSQL数据库的试验,但不知道什么更快的选择也有---由于单元的测试需要运行尽可能快地,一个在内存解决方案将是理想的。

我还应该提到,我已经绑自己TSQL因为我永远只会使用微软平台。

有帮助吗?

解决方案

鉴于

这你陈述:

  

我还应该提到,我绑   自己TSQL因为我只有永远   将使用微软   平台。

然后使用SqlServer的精简版可以为您的需求很好地工作。 它不会完全在内存中操作,但可以在只读模式(其中,因此它可以由多个测试在使用一次没有编辑发生于主数据库文件)操作

有一些陷阱,没有存储的过程都支持,几个数据类型需要被翻译和某些数据类型有严格的限制(特别是VARCHAR只能去4000个字符)Sql的Linq还没有被正确支撑。

尽管如此我已经使用一个SQLServer精简版作为几乎完全下降更换为具有良好的结果正确的SQL Server数据库。

其他提示

我发现 SQLite的是最好的选择。虽然,我使用NHibernate的,但它是零配置,因此只需要一秒钟成立。虽然,你必须要知道的是,这些类型的发动机通常缺乏你可能需要一些东西(例如,SQLite的鼓起,当你在表名中的空格,如果您使用的是ADO提供商)

当然,@TopBanana是右约一些与未使用“实际的”数据库中的问题。然而,在内存中的RDBMS是您的最佳选择想要真正快速运行这些类型的测试(例如,对于增量或CI检查,在测试版本)。

在其他巨大的优势是,你不必担心安装或拆除。这是令人难以置信的非生产性有您的入住失败,因为开发一个打破你的开发数据库; - )

我会建议使用同一个数据库单元测试作为生产。你真的不需要一些奇怪的差异拍摄你的脚,当你正在调试的大问题。

如果你看看真正的大单元测试套件NHibernate的,你会看到它使用(基于磁盘)的SQL Server,并进行测试跑起来速度惊人。这更令人印象深刻考虑到有很多多个表创建/删除比一般的单元测试集,这是不是SQL Server在优化回事。

我听说有软件在Windows启动RAMDISK(不记得网址,抱歉)。

这可能是有趣的,上创建测试数据库。

是SQL服务器 真的 瓶颈对于你的单元的测试吗?

我的意思是:

  1. 你有没有分析单元测试(喜欢的东西SQL Profiler).他们都慢?一些缓慢?为什么?
  2. 是你的单元测试做的太多了?是的安装和拆卸码太重了?
  3. 如果SQL是你的瓶颈,你有没有考虑一个 嘲笑框架, 所以你模拟出你所有的SQL话。

我有类似的挑战与Oracle和我们做到如下:

  • 确保我们有真正的单元的测试没有碰数据库,但是用来嘲笑的服务,而不是

  • 标记DB试验,实际上需要Oracle与的试验,可能违HSQLDB或H2或任何其他在存储器数据库。因此,我们可以运行,它们分开。

  • 与测试实际使用Oracle的特点,我们使用正常的Oracle instance跑上RAM盘。

这使得测试相当快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top