0

我有一个 ASP.NET MVC3 应用程序,我需要在其中测试一个数据库包装类。这是启动和运行。但是我需要在测试开始时重新创建数据库。我需要擦除数据库中的所有数据。该数据库是一个测试替身。

我有创建数据库的 SQL 脚本。现在我在“SQL Server Manager”中手动运行它并且它可以工作。但我想在新的测试运行之前运行脚本。

有人知道怎么做吗?

4

2 回答 2

1

将此代码放在您的单元测试类中。您应该在此处创建所有数据库。TestInitialize 在任何测试开始之前运行。这将发生一次,每次开始单元测试时。

    [TestInitialize]
    public void TestInitialize()
    {
        -
    }
于 2012-09-25T14:58:40.483 回答
1

编辑 - 用一个体面的答案代替。

创建一个如下所示的 C# 类 -

using System;
using NUnit.Framework;

namespace NUnit.Tests
{
  [SetUpFixture]
  public class MySetUpClass
  {
    [OneTimeSetUp]
    public void RunBeforeAnyTests()
    {
      // Set up my database with SQL scripts run via SqlCommand
    }

    [OneTimeTearDown]
    public void RunAfterAnyTests()
    {
      // tear down my database  with SQL scripts run via SqlCommand
    }
  }
}

那应该只在任何测试之前运行一次设置,然后在所有测试完成后才拆除一次。

我意识到我正在从死里复活,但我觉得是时候得到一个体面的答案了。

无论如何,有一个更好的方法。模拟您的数据层并对其进行测试。然后确保使用 SQL Server 完成的所有操作都采用存储过程和函数的形式。然后使用 Visual Studio 为这些存储过程和函数创建单元测试。

如果您的存储库中有逻辑,我建议您使用Insight.Database并利用其 AutoInterface 功能。这样,您的存储库层只是一个接口,您可以轻松地模拟并继续前进。

于 2012-09-25T14:15:37.273 回答