0

私は WCF サービス (作成、取得、および更新操作のみ) を持っています。これは ESB サービスであり、データの検証が行われないように設計されています。つまり、同じデータを何度も渡すか、空のデータを渡すことができます。 1 つの必須フィールドを残します。

実行するたびに同じデータを使用して、3 つの操作すべての統合テストを実行する必要があります。

同じデータを複数回取得して更新することもできるため、取得と更新を自動化できます。

しかし、作成操作を自動化するにはどうすればよいですか? 実行するたびに同じレコードを作成できますが、同じデータの複数の行があり、データベースに同じレコードを入力したくないため、データベースから取得するデータがわかりません。

ばかげているように見えますが、これが現実です。どんな提案や助けも本当に感謝しています。

注:私は通常のMSTestを持っています

4

2 に答える 2

0

テスト データの問題に対処するには、テスト クリーンアップ属性またはクラス クリーンアップ属性のいずれかを利用できます。これらは、それぞれ、特定のクラスまたはメソッド内のすべてのテストの実行が終了した直後に呼び出されるメソッドです。すべてのテスト データを削除するクリーンアップ メソッド内でストアド プロシージャ/クエリを呼び出すことができます。レコードごとに異なる GUID を使用する代わりに、クリーンアップ SQL がダミー データを識別するために使用できる他の ID を使用します。

[TestClass()]
public sealed class MyClassTest
{

    [ClassCleanup()]
    public static void ClassCleanup()
    {
        // This method is called after all of the test methods in this
        // test class have finished running...call a cleanup stored procedure
    } 


    [TestMethod()]
    public void MyMethodTest()
    {
        // This is where you perform your test
    }
}

Microsoft のドキュメント: http://msdn.microsoft.com/en-us/library/ms243147%28v=vs.80%29.aspx

于 2013-07-25T02:24:39.010 に答える
0

は、テストの開始前に事前定義された既知の状態を持っているSystem Under Test 必要があり、各テストは終了後にシステムをその状態に戻す必要があります。

Createこれは、テストがやその他のメソッドを呼び出すたびに、Cleanupメソッド内のデータベースからレコードを削除する必要があることを意味します。テストは独立していなければなりません。

メソッドが多くのテーブルにレコードを追加する可能性があることはわかってCreateいますが、それは難しいことです。Initializeこれを行う簡単な (?) 方法は、メソッドでデータベースを再デプロイするか、 で dbのスナップショットInitializeを取得し、で db をそのスナップショットに戻すことCleanupです。

于 2013-07-25T06:33:21.937 に答える