Używam atrybutu NUnit 2.5.3 TestCaseSource i tworzenie fabryki do generowania moich testów. Coś takiego:NUnit TestCaseSource wartość przejścia do fabryki
[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
Item obj = new Item();
obj.Description = text;
}
Moje źródło to:
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");
}
}
Co muszę być w stanie zrobić to dodać maksymalną kontrolę długości do zmiennej String, ale to maksymalna długość jest określona w kontrakty w badanej klasie. W naszym przypadku jest to prosta publiczna struktura:
Nie mogę znaleźć żadnego sposobu przekazania wartości do generatora przypadku testowego. Próbowałem statycznych wspólnych wartości i nie zostały one pobrane. Nie chcę zapisywać danych w pliku, ponieważ wtedy potrzebowałbym ponownie wygenerować ten plik za każdym razem, gdy zmieni się kod.
Chcę dodać następującą linię do mojego testcase:
yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
.Throws(typeof(PreconditionException));
Coś dość prosty w koncepcji, ale coś widzę, że nie da się zrobić. Jakieś sugestie?