Я использую атрибут 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));
Что-то довольно простое в концепции, но что-то, что я считаю невозможным сделать. Есть предложения?