2010-03-29 129 views
0

任何人都可以指示我如何获得NUnit测试来运行.sql文件来创建/设置数据库。单元测试运行.sql脚本到SQL创建数据库

我知道NUnit中的TestFixtureSetUp和TestFixtureTearDown属性/方法。

所以我知道如何在所有或每个单元测试之前和之后调用方法。

我只是不确定如何加载和执行.sql文件的内容再次以编程方式SQL Server 2005数据库。

任何示例?

这是我们的TDD/CI的一部分。我们希望在执行单元测试之前创建数据库并拆除数据库。

干杯,

- 李

UPDATE: 我现在已经退出了.SQL脚本的数据库/运行的创建使用批处理文件的单元测试之外请致电sqlcmd。这似乎很好。

回答

0

我在.bat文件中使用sqlcmd.exe作为CI构建的独立部分来运行.sql脚本,以便在单元测试之前立即执行。

这似乎是一个可以接受的方式。

0

我使用每行一个sql语句的文本文件。该TestFixtureSetUp方法读取该文件(逐行),并与ADO.NET的IDbCommand的执行每个SQL语句:

类似:

using (IDbConnection cnn = OpenConnection(connectionString)) 
    foreach (string line in ReadFile(sqlFile)) 
    using (IDbCommand cmd = cnn.CreateCommand()) { 
     cmd.CommandText = line; 
     cmd.ExecuteNonQuery(); 
    } 

,你可能也想看看像SQL Installer.NET

+0

不好,ExecuteNonQuery似乎不喜欢GO,EXEC或USE命令。可以在单元测试之外创建数据库,但仍然是CI构建的一部分。 – 2010-03-30 11:13:20

0

看看Fluent-Migrator
它能够针对SQL Server 2005运行SQL脚本,并且可以从nant运行。

该项目的目的是允许开发人员在域更改时迁移数据库,特别是TDD,但如果需要也允许更改的反转。

+0

Cheers Nathan,但我正在考虑从单元测试运行.sql脚本,正如我在我的问题中所解释的那样。感谢您提供替代方案。 – 2010-03-30 07:37:51