2011-08-02 11 views
5

私のユニットテストでTestCleanupを実行したいが、パラメータをクリーンアップメソッドに渡す必要がある。しかし、デフォルトのTestCleanupが自動的に呼び出されるので、私はそれにパラメータを渡すことができません。TestCleanupでパラメータを渡す

誰かがこれを行う方法を提案できますか?

+1

作業中のコードの一部を投稿すると、質問に答えるのに役立ちます。 –

答えて

3

namespace YourNamespace 
{ 
    [TestClass] 
    public class UnitTest1 
    { 
     private string someValue; 

     [TestMethod] 
     public void TestMethod1() 
     { 
      someValue = "someValue"; 
     } 

     [TestCleanup] 
     public void CleanUp() 
     { 
      // someValue is accessible here. 
     } 
    } 
} 

CleanUp()方法は、すべてのユニットテストの後に実行されますので、someValueがにバインドされます正しい単体テストの文脈。

これが役に立ちます。

0

あなたが渡す必要があると思うパラメータの値でテストクラスのフィールドを設定することができますが、正直言ってそれはクリーンアップのためのいくつかのパラメータが必要であることは驚きです。これはテストで何かが間違っているという匂いになります。

ユニットテストはクリーンアップを必要とすべきではありません。各テストは独自のセットアップを担当する必要があり、独立して実行する必要があります。

一部のクリーンアップが必要な外部依存関係がある統合テストをお持ちの場合は、提案したようにフィールドを使用することができます(各テストの開始時に設定しますそのテストの後にクリーンアップするための正しい値であることを確認する)、または最後に明示的に各テストによって呼び出された明示的なクリーンアップ機能(必要なパラメータを取得したもの)を作成し、 TestFixtureをクリーンアップして、ALLデータをクリーンアップするようにしてください。ANYは、クリーンアップメソッドを呼び出さずにテストに失敗した場合に備えてテストを行います。

セットアップ、テスト、およびクリーンアップの試験方法との間で通信するために、テストクラスのインスタンス変数を使用することができ
+1

テストセットアップとクリーンアップメソッドが存在する理由は、すべてのテストで共通のセットアップとクリーンアップロジックをカプセル化できることです。ユニットテスト固有のロジックをカプセル化するのではありません。 – Zorayr