我正在使用NUnit 2.5.3 TestCaseSource屬性並創建一個工廠來生成我的測試。事情是這樣的:NUnit 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));
東西在概念上非常簡單的事,但我發現不可能做到的。有什麼建議麼?