2

コードのみの永続性を使用して、MVC2、Entity Framework、および CTP4 で遊んでいます。ドメイン オブジェクトの MSUnit でいくつかの単体テストを作成しました。これには、このパラダイムで永続化がどのように機能するかを確認するためのものも含まれます。これらのテストには Sql Server CE 4.0 を使用しています。1 つの問題を除いて、これは問題なく動作します...同じクラス内のテスト間でデータが保持されているようです。

Java、Hibernate Annotations、および HSQLDB を使用した経験があり、その場合、テストの実行ごとに DB が作成され、破棄されます。ただし、SqlCompact では、同じテスト データ フィクスチャを使用するいくつかのテストがあり、両方を実行すると制約違反が発生します。

テーブルをドロップ/データを明示的に削除するためのいくつかのハックを介してこれを修正できます[TestCleanup]が、この場合に SQL Compact を使用するときに、各テストで新しい DB を確実に開始する適切な方法は何ですか? 答えは簡単だと思いますが、どこにも見つからないようです。ありがとう。

編集:今のところ、私はこれをやっていますが、うまくいきますが、好きではありません。より良いアイデアを歓迎します:

    [TestCleanup]
    public void teardown()
    {
        mgr.Database.DeleteIfExists();
        mgr.Database.Create();
    }
4

1 に答える 1

0

より良いアプローチは、各テストが実行される前に呼び出される [TestInitialize] に分解したコードを追加することだと思います。これを、フィクスチャ全体に対して 1 回呼び出される [ClassInitialize] と比較してください。

私は NUnit に精通しており、この表は NUnit 属性を MSUnit http://blogs.msdn.com/b/nnaderi/archive/2007/02/01/mstest-vs-nunit-frameworks.aspxにマッピングするのに役立ちます。

于 2012-05-12T14:18:26.490 に答える