Тест NUnit с массивом значений - программирование
Подтвердить что ты не робот

Тест 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
}
4b9b3361

Ответ 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