您能否像将数据传递给测试用例一样将数据传递给测试fixture ?



您可以像将数据传递给测试用例一样将数据传递给NUnit3测试装置吗?这样做有意义吗?

绝对!

如果需要传入的参数数量有限,您可以将这些参数放在普通的[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中的新功能。它看起来还没有被记录下来,但是您可以将它以--params:X=5;Y=7"格式传递到NUnit控制台命令行。然后可以通过TestContext.Parameters类检索它。

最新更新