Можете ли вы передавать данные в тестовое устройство так же, как вы передаете данные в тестовые случаи?

Можете ли вы передавать данные в тестовое устройство NUnit3 так же, как вы передаете данные в тестовые случаи? Есть ли смысл в этом? (запустить набор (класс фикстур) на основе параметра)

1 ответ

Абсолютно!

Если вам нужно передать ограниченное количество параметров, вы можете просто поместить их в обычный [TestFixture] атрибут, и они будут переданы в конструктор TestFixture. например

[TestFixture("hello", "hello", "goodbye")]
[TestFixture("zip", "zip", "zap")]
public class ParameterizedTestFixture
{
    private string eq1;
    private string eq2;
    private string neq;

    public ParameterizedTestFixture(string eq1, string eq2, string neq)
    {
        this.eq1 = eq1;
        this.eq2 = eq2;
        this.neq = neq;
    }

Эта версия будет запускать тестовое устройство дважды с двумя различными наборами параметров. ( Документы)

Если у вас есть больше параметров, вы можете посмотреть на [TestFixtureSource] - который работает во многом таким же образом, но позволяет вам вычислять ваши параметры в статическом методе, в отличие от простоты, указанной в атрибуте. ( Документы) Что-то вроде этого:

[TestFixtureSource(typeof(FixtureArgs))]
public class MyTestClass
{
    public MyTestClass(string word, int num) { ... }

    ...
}

class FixtureArgs: IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        yield return new object[] { "Question", 1 };
        yield return new object[] { "Answer", 42 };
    }
}

Наконец, если вам нужно передать параметры во время выполнения, это также возможно через --params опция командной строки, новая в NUnit v3.4. Не похоже, что это задокументировано, но вы можете передать его в командную строку консоли NUnit в формате --params:X=5;Y=7", Затем его можно получить через TestContext.Parameters учебный класс.

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