运行.sql脚本到SQL创建数据库的单元测试

时间:2010-03-29 09:39:56

标签: sql tdd nunit continuous-integration

任何人都可以指出我如何获得NUnit测试以运行.sql文件来创建/设置数据库。

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

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

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

任何例子?

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

干杯,

- 李

更新: 我现在已经在单元测试之外使用批处理文件来调用sqlcmd来创建数据库/运行.sql脚本。这似乎工作正常。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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

之类的内容

答案 2 :(得分:0)

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

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