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 に答える