Тест NUnit с массивом значений
Я пытаюсь использовать NUnit с атрибутом values, чтобы я мог указать много разных входов без 100 отдельных тестов.
Однако теперь я понимаю, что есть моменты, когда я хочу использовать один и тот же набор входов, но на очень разных тестах, как показано ниже.
Можно ли указать все значения в одном месте, например массив, и использовать массив для каждого атрибута значений?
Я хочу убедиться, что тест выполняется как 100 отдельных тестов, а не 1 тест, который выполняет 100 значений.
Я просмотрел документацию Nunit, но я не могу найти способ сделать это. Есть идеи?
код:
[Test]
public void Test1([Values("Value1", "Value2", "Value3", ... "Value100")] string value)
{
//Run Test here
}
[Test]
public void Test2([Values("Value1", "Value2", "Value3", ... "Value100")] string value)
{
//Run Test here
}
[Test]
public void Test3([Values("Value1", "Value2", "Value3", ... "Value100")] string value)
{
//Run Test here
}
Ответы
Ответ 1
Атрибут TestCaseSource
подходит здесь.
Смотрите пример:
private string[] commonCases = { "Val1", "Val2", "Val3" };
[Test]
[TestCaseSource(nameof(commonCases))]
public void Test1(string value)
{
....
}
[Test]
[TestCaseSource(nameof(commonCases))]
public void Test12(string value)
{
....
}
Ответ 2
Вы можете использовать FactoryAttribute
для тестового метода вместо ValuesAttribute
для параметра. Подробнее об этом здесь.
Edit:
Александр прав. FactoryAttribute был временной частью API. Правильный способ - использовать TestCaseSourceAttribute