我有一个ASP.NET MVC3应用程序,我需要测试数据库包装器类。这已启动并正在运行。但是我需要在测试开始时重新创建数据库。我需要擦除数据库中的所有数据。数据库是测试双倍。
我有创建数据库的SQL脚本。现在我在“SQL Server管理器”中运行这个manualy,它的工作原理。但是我希望在新的测试运行之前运行该脚本。
任何人都知道怎么做?
答案 0 :(得分: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为这些sprocs和函数创建单元测试。
如果您的存储库中有逻辑,我建议抓取Insight.Database并使用其AutoInterface功能。这样,您的存储库层只是一个界面,您可以轻松地模拟并继续前进。
答案 1 :(得分:1)
将此代码放在单元测试类中。您应该在此处创建所有数据库。 TestInitialize在任何测试开始之前运行。无论何时开始单元测试,都会发生这种情况。
[TestInitialize]
public void TestInitialize()
{
-
}