8

NUnit 3.0 と TestFixtureSource を使用して、フィクスチャ内でさまざまなパラメーター/構成を使用して複数回テスト ケースを実行しています (これを TestFixture レベルで実行したいと考えています)。簡単な例:

[TestFixtureSource(typeof (ConfigurationProvider))]
public class Fixture
{
    public Fixture(Configuration configuration)
    {
        _configuration = configuration;
    }

    private Configuration _configuration;

    [Test]
    public void Test()
    {
        //do something with _configuration
        Assert.Fail();
    }
}

構成の 1 つで Test() が失敗し、別の構成では成功したとします。実行レポート ファイルと Visual Studio のテスト エクスプローラーでは、失敗した実行と成功した実行の両方の名前が単に Test() として表示され、どのセットアップが問題を引き起こしたかについては何もわかりません。

この状況でテスト ケースの名前に影響を与える方法はありますか (つまり、フィクスチャの実行/構成ごとにその名前を前に付ける)? 回避策として、現在、各テスト ケースが起動する前に結果出力を出力していますが、それは避けたいと考えています。

NUnit 3.0 はベータ版であり、この機能はかなり新しいため、ドキュメントには何も見つかりませんでした。TestCaseData を見つけましたが、まだフィクスチャで使用するように調整されているとは思いません (テスト ケース用に設計されています)。

4

2 に答える 2

3

テスト名を変更する方法が見つかりませんが、NUnit3 はテストフィクスチャの説明を含めてテスト名を作成するため、必要ではありません。

とが次のような実装を持っている場合、質問のサンプル クラスFixtureを変更せずに使用できます。ConfigurationConfigurationProvider

public class Configuration
{
    public string Description { get; }

    public Configuration(string description)
    {
        Description = description;
    }

    public override string ToString()
    {
        return Description;
    }
}

public class ConfigurationProvider : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        yield return new Configuration("Foo");
        yield return new Configuration("Bar");
        yield return new Configuration("Baz");
    }
}

「トリック」は、フィクスチャへのコンストラクターパラメーターが文字列であるか、フィクスチャーのToString適切な説明を提供するメソッドを持っていることを確認することです。

Visual Studio で NUnit 3 テスト アダプターを使用している場合、テストフィクスチャは として表示されるためFixture(Foo)、テストFixture(Bar)Fixture(Baz)簡単に区別できます。nunit3-console.exe からの xml 出力も、わかりやすい名前 fx を使用します。fullname=MyTests.Fixture(Bar).Test

<test-case id="0-1003" name="Test" fullname="MyTests.Fixture(Bar).Test" methodname="Test" classname="MyTests.Fixture" runstate="Runnable" result="Failed" ... >
    <failure>
        <message><![CDATA[]]></message>
        <stack-trace><![CDATA[at MyTests.Fixture.Test() in ... ]]></stack-trace>
    </failure>
    ...
</test-case>

Visual Studio での NUnit 3 テスト アダプターの使用

于 2017-02-17T19:43:25.427 に答える