NUnit 2.5.3 TestCaseSource 属性を使用し、ファクトリを作成してテストを生成しています。このようなもの:
[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
Item obj = new Item();
obj.Description = text;
}
私のソースはこれです:
public static IEnumerable<TestCaseData> VariableString
{
get
{
yield return new TestCaseData(string.Empty).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Empty_Text");
yield return new TestCaseData(null).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Null_Text");
yield return new TestCaseData(" ").Throws(typeof(PreconditionException))
.SetName("Does_Reject_Whitespace_Text");
}
}
私ができる必要があるのは、変数文字列に最大長チェックを追加することですが、この最大長はテスト対象のクラスのコントラクトで定義されています。私たちの場合、単純なパブリック構造体です:
public struct ItemLengths
{
public const int Description = 255;
}
テスト ケース ジェネレーターに値を渡す方法が見つかりません。静的共有値を試しましたが、これらは取得されません。コードが変更されるたびにこのファイルを再生成する必要があるため、ファイルに保存したくありません。
テストケースに次の行を追加します。
yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
.Throws(typeof(PreconditionException));
コンセプトとしてはかなり単純なことですが、私には不可能なことだと思います。助言がありますか?