3

私はインターンシップを開始しました。私の仕事は、いくつかのプロジェクトで単体テストをセットアップすることです。

私はすでに数十のテストを実装しており、各実行後または実行前に元のデータベースを復元するメカニズムを作成したいと考えています。

データベースの作成、入力、削除に必要なスクリプトはありますが、このメカニズムをテスト クラスごとに呼び出すのではなく、1 回だけ呼び出します。

ClassIniatialize()1 つまたはすべてのテストを開始したときに 1 回だけ呼び出される whoを作成することはできますか?

編集

私/あなたが必要とするのは、 AssemblyInitialize()AssemblyCleanUp( ) を使用することだけで、すべてが解決されます;)

4

4 に答える 4

3

私/あなたが必要とするのは、 AssemblyInitialize()AssemblyCleanUp( ) を使用することだけで、すべてが解決されます;)

于 2013-04-25T15:53:40.920 に答える
1

でトランザクションを開始TestInitializeし、でロールバックを実行できTestCleanupます。このアプローチにより、個々のテストの範囲外でデータが変更されることを回避できます。

  [TestInitialize()]
  public void Initialize()
  {
     //Init DB Transaction
  }

  [TestCleanup()]
  public void Cleanup()
  {
     //Rollback DB Transaction, database returns to the initial state
  }

テストを実行するには、事前に入力されたテスト データベースが必要です。

補足として、データベース アクセスは単体テストではなく統合テストでテストする必要があります。外部依存関係を追加することは、単体テストの定義に反します。

インメモリSQLiteを使用する可能性についても確認してください。本番データベース エンジンよりもデータベース アクセスのテストに適しています。

于 2013-04-25T13:39:42.147 に答える