0

ASP.NET MVC3アプリケーションがあり、データベースラッパークラスをテストする必要があります。これは稼働中です。しかし、テストの開始時にデータベースを再作成する必要があります。データベース内のすべてのデータを消去する必要があります。データベースはテストダブルです。

データベースを作成するSQLスクリプトがあります。今のところ、「SQL Server Manager」でこの手動を実行すると、機能します。ただし、新しいテストを実行する前にスクリプトを実行してもらいたいと思います。

誰もがこれを行う方法を知っていますか?

4

2 に答える 2

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
    }
  }
}

これは、テストの前に1回だけセットアップを実行し、すべてのテストが完了した後に1回だけティアダウンを実行する必要があります。

私はこれを死からよみがえらせていることに気づきましたが、まともな答えを得る時が来たと感じました。

いずれにせよ、はるかに良い方法があります。データレイヤーをモックしてテストします。次に、SQLServerで行われるすべてがストアドプロシージャと関数の形式であることを確認します。次に、Visual Studioを使用して、これらのsprocと関数の単体テストを作成します。

リポジトリにロジックがある場合は、Insight.Databaseを取得して、そのAutoInterface機能を利用することをお勧めします。このように、リポジトリレイヤーは単なるインターフェイスであり、簡単にモックして先に進むことができます。

于 2012-09-25T14:15:37.273 に答える
1

このコードを単体テストクラス内に配置します。ここですべてのデータベース作成を行う必要があります。TestInitializeは、テストが開始される前に実行されます。これは、単体テストが開始されるたびに1回発生します。

    [TestInitialize]
    public void TestInitialize()
    {
        -
    }
于 2012-09-25T14:58:40.483 に答える