Можете ли вы передавать данные в тестовое устройство так же, как вы передаете данные в тестовые случаи?
Можете ли вы передавать данные в тестовое устройство 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
учебный класс.