2011-09-09 12 views
0

を、オブジェクトを作成するためのコードを生成します。私は、このメソッドを同じ正確な値(Parameterオブジェクト "tree"のコピー)で呼び出すユニットテストを作成したいと思います。 この場合、クラスのすべてのフィールドとプロパティを宣言して初期化しているプリミティブ以外の多くの行を書くことは非常に面倒です。 パラメータ変数を右クリックするといいですそのようなオブジェクトを作成するコードを自動生成する必要があります。は、私はかなり一般的でなければならないと考え、このシナリオを、持っている現在の値と

だから私のブレークポイントであれば、私のParameterオブジェクトは、そのコードが生成されるであろう、値だけでなく

Parameter parameter = new Parameter 
    { 
    someInt = 42, 
    someDecimal = 42.42m, 
    subParameter = new SubParameter { someString = "42" } 
    }; 

を持っています。私は私のユニットテストのために生成されたコードを使用することができます。

このようなことはありますか?


編集:

私が不明確となっていると思います。コードを自分で手書きで書く方法はよくわかっています。

私が望むのは、私がブレークポイントを叩いて複雑な変数(またはそれに関する変数)を見ているとき、私はこの変数のクローンを作成する私のためのコードを生成することができます。私はユニットテストのために生成されたコードを使用します。

このようなツールはありますか?

答えて

0

ちょうどあなたのためのパラメータを作成するためのヘルパーメソッドを作成します。

public void CreateParameter() 
{ 
    return new Parameter 
    { 
     someInt = 42, 
     someDecimal = 42.42m, 
     subParameter = new SubParameter { someString = "42" } 
    }; 
} 

サンプル使用を

[TestMethod] 
public void MyTest() 
{ 
    SomeClass.MethodBeingTested(CreateParameter()); 
} 

あなたが特定のパラメータ値を持つようにしたい場合は、返されたパラメータを変更したり、過負荷を提供その値を入力することができます:

[TestMethod] 
public void MyTest() 
{ 
    Parameter parameter = CreateParameter(); 
    parameter.someInt = 23; 
    SomeClass.MethodBeingTested(parameter); 
} 

私は通常hav私のCreateParameterは、ユニットテストが特定の値に対して "偶然"合格する可能性を減らすために、パラメータをランダムな値で設定しますが、他のテストでは失敗します。

0

あなたは初期の試験方法のためTestInitializeを使用することができます。

[TestClass] 
    public class UnitTest1 
    { 
     Parameter _parameter = null; 

     [TestInitialize] 
     public void Initialize() 
     { 
      _parameter = new Parameter 
      { 
       someInt = 42, 
       someDecimal = 42.42m, 
       subParameter = new SubParameter { someString = "42" } 
      }; 
     } 

     [TestCleanup] 
     public void Cleanup() 
     { 
      _parameter = null; 
     } 

     [TestMethod] 
     public void MyTest1() 
     { 
      // test _parameter 
     } 

     [TestMethod] 
     public void MyTest2() 
     { 
      // test _parameter 
     } 
    } 
関連する問題