8

有没有办法像这样向 nunit 设置方法添加参数:public void SetUp(Point p = null) { /*code*/ }.

我试过了,得到了以下异常SetUp : System.Reflection.TargetParameterCountException : Parameter count mismatch

4

1 回答 1

1

我认为你的意思是避免代码重复。尝试使用 SetUp() 中使用的覆盖方法提取基类。所有派生类都将从基类执行测试,并在 OnSetUp() 中准备好对象

[TestFixture]
public class BaseTestsClass
{
    //some public/protected fields to be set in SetUp and OnSetUp

    [SetUp]
    public void SetUp()
    {
        //basic SetUp method
        OnSetUp();
    }

    public virtual void OnSetUp()
    {
    }

    [Test]
    public void SomeTestCase()
    {
        //...
    }

    [Test]
    public void SomeOtherTestCase()
    {
        //...
    }
}

[TestFixture]
public class TestClassWithSpecificSetUp : BaseTestsClass
{
    public virtual void OnSetUp()
    {
        //setup some fields
    }
}

[TestFixture]
public class OtherTestClassWithSpecificSetUp : BaseTestsClass
{
    public virtual void OnSetUp()
    {
        //setup some fields
    }
}

使用参数化的 TestFixture 也很有用。课堂上的测试也将按照 TestFixture 和 SetUp 方法进行。但请记住

参数化设备(如您所见)受到以下事实的限制:您只能使用属性中允许的参数

用法:

[TestFixture("some param", 123)]
[TestFixture("another param", 456)]
public class SomeTestsClass
{
    private readonly string _firstParam;
    private readonly int _secondParam;

    public WhenNoFunctionCodeExpected(string firstParam, int secondParam)
    {
        _firstParam = firstParam;
        _secondParam = secondParam;
    }

    [Test]
    public void SomeTestCase()
    {
        ...
    }
}
于 2013-10-18T00:31:58.203 回答