3

NUnitを使用して、TestCase属性に文字列引数を渡そうとしていますが、「属性引数は、定数式、typeof式、または属性パラメーターtypeの配列作成式である必要があります」というメッセージが表示されます。

これは簡略化されたバージョンですが、MyStaticは構築された正規表現文字列を返す呼び出しであるため、呼び出されるMyStaticの各メソッドは文字列ビルダーに追加され、文字列に暗黙的に変換されます。

個別の単体テストを作成すると、DRYの原則に反するため、この方法を維持したいと思います。

  [TestCase("","/123",MyStatic.DoThis().And().GetString("ABC"), "id","123")]
  public void MyMehthod(string Root, string Path, string Route, string Param, string Expected)
  {
    var result = SetupRouteResponse(Root, Path, Route, "MatchIt");

    Assert.AreEqual(Expected, (string)result.Context.Parameters[Param]);
  }
4

1 に答える 1

10

これらの種類の引数にはTestCaseSourceを使用してみてください:http ://www.nunit.org/index.php?p = testCaseSource&r = 2.5.9

ドキュメントからの例:

 [Test, TestCaseSource("DivideCases")]
 public void DivideTest(int n, int d, int q)
 {
    Assert.AreEqual( q, n / d );
 }

 static object[] DivideCases =
 {
    new object[] { 12, 3, 4 },
    new object[] { 12, 2, 6 },
    new object[] { 12, 4, 3 } 
 };

あなたの場合:

 [Test, TestCaseSource("MyCaseSource")]
 public void MyMehthod(string Root, string Path, string Route, string Param, string Expected)
 {
   var result = SetupRouteResponse(Root, Path, Route, "MatchIt");

   Assert.AreEqual(Expected, (string)result.Context.Parameters[Param]);
 }

 static object[] MyCaseSource=
 {
    new object[] { "","/123",MyStatic.DoThis().And().GetString("ABC"), "id","123" },
 };
于 2012-05-21T14:24:41.967 に答える