您是否可以将数据传递到NUnit3测试夹具,就像将数据传递给测试用例一样? 这样做甚至有意义吗? (根据参数运行套件(夹具类))
答案 0 :(得分:6)
绝对!
如果需要传入的参数数量有限,可以将它们放在普通的[TestFixture]
属性中,然后将它们传递给TestFixture的构造函数。 e.g。
[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;
}
此版本将使用两组不同的参数运行测试夹具两次。 (Docs)
如果您有更多参数,您可能希望查看[TestFixtureSource]
- 它的工作方式大致相同,但允许您以静态方法计算参数,而不是在属性中指定的明确性。 (Docs)像这样的东西:
[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中的新增功能。它似乎尚未记录,但您可以以--params:X=5;Y=7"
格式将其传递到NUnit控制台命令行。然后可以通过TestContext.Parameters
类检索它。