Выполнение теста с определенными данными

У меня есть тест, который принимает данные теста. Если для запуска теста используется консольное приложение nunit, можно ли указать данные для использования?

Например:

[Test, TestCaseSource(typeof(TestData))]
public void ATest(string param1, int param2)

public class TestData : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        yield return new object[] { "blah1 blah1", 1};
        yield return new object[] { "blah2 blah2", 2};
    }
}

Я хочу иметь возможность запускать ATest только с тестовыми данными ["blah2 blah2", 2]. Если я бегу следующим образом:

nunit3-console.exe Tests.dll --test=ATest --workers=1 --noresult

это будет работать дважды.

2 ответа

Решение

Просто беги...

nunit3-console.exe Tests.dll --test ATest ("blah2 blah2", 2)

или же

nunit3-console.exe Tests.dll - где "test~=blah2"

Если эта строка уникальна для всех ваших тестов.

Обратите внимание, что первый может потребовать экранирования кавычек, в зависимости от вашей операционной системы.

Один из способов сделать это - вернуть TestCaseData объект вместо

Примерно так: (не проверено, так что синтаксис может быть немного неправильным!)

[Test, TestCaseSource(typeof(TestData))]
public void ATest(string param1, int param2)

public IEnumerator GetEnumerator()
{
    yield return new TestCaseData("blah1 blah1", 1).SetName("FirstTest");
    yield return new TestCaseData("blah2 blah2", 2).SetName("SecondTest");
}

Для запуска первого теста вы должны использовать командную строку:

nunit3-console.exe Tests.dll --test=YourNameSpace.ATest.FirstTest --workers=1 --noresult

В зависимости от того, что вы делаете, установка категории может быть более подходящей, чем название. Страница документации показывает, что доступно: https://github.com/nunit/docs/wiki/TestCaseData

Другие вопросы по тегам