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

发布于 2024-08-27 07:24:22 字数 402 浏览 3 评论 0原文

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

我了解 NUnit 中的 TestFixtureSetUp 和 TestFixtureTearDown 属性/方法。

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

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

有什么例子吗?

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

干杯,

--李

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

Can anyone point me in the direction of how I could get a NUnit test to run a .sql file to Create / Setup a database.

I know about the the TestFixtureSetUp and TestFixtureTearDown attributes / methods in NUnit.

So I KNOW how to call methods before and after all or each unit tests.

I'm just unsure of how to load and execute the contents of a .sql file agains a SQL Server 2005 database programatically.

Any examples?

This is part of our TDD / CI. We are wanting to create the database before and tear down the database after executing unit tests.

Cheers,

-- Lee

UPDATE :
I've now pulled out the creation of the database / running of the .sql scripts outside of the unit tests using a batch file to call sqlcmd. And that seems to work fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

调妓 2024-09-03 07:24:22

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

这似乎是一种可以接受的做法。

I've used sqlcmd.exe in a .bat file to run the .sql scripts as an separate part of the CI build to execute immediately before the Unit Tests.

This seems to be an acceptable way of doing it.

她比我温柔 2024-09-03 07:24:22

我使用一个文本文件,每行一个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

i use a text file with one sql statement per line. the TestFixtureSetUp method reads this file (line by line) and executes each sql statement with ADO.NET's IDbCommand:

something like:

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

you might also want to have a look at something like SQL Installer.NET

無心 2024-09-03 07:24:22

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

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

Have a look at Fluent-Migrator.
It has the ability to run SQL scripts against SQL Server 2005 and can be run from nant.

The purpose of the project is to allow the developer to migrate the database as the domain changes, particularly TDD, but also allow the reversal of changes if so desired.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文