2015-09-15 7 views
8

私はNUnit 3.0とTestFixtureSourceを使用して、フィクスチャ内のテストケースをさまざまなパラメータ/コンフィギュレーションで複数回実行します(これはTestFixtureレベルで行います)。例:Nunit3 TestFixtureSourceから渡されたパラメータに基づいてテストケース名を変更する方法

[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(); 
    } 
} 

Test()がいずれかの設定で失敗し、別のテストで成功したとします。実行レポートファイルとVisual Studioのテストエクスプローラで、失敗した実行と成功した実行の両方の名前がTest()として表示されますが、どのセットアップで問題が発生したかはわかりません。

この場合、テストケース名に影響する方法はありますか(つまり、フィクスチャの実行/設定ごとに名前を付けます)?回避策として、私は現在、各テストケースが起動する前に出力結果を出力していますが、これを避けることをお勧めします。

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

答えて

2

testnameを変更する方法が見つかりませんが、NUnit3はtestnameをtestfixtureの説明を組み込むことで構築するため、必要ではありません。

ConfigurationConfigurationProviderはこのような実装があれば質問からクラス Fixtureをそのまま使用することができます例:

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テストアダプタを使用している場合、testfixturesはFixture(Foo),Fixture(Bar)Fixture(Baz)と表示されるため、テストを簡単に区別できます。そのようなアクションを実行する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> 

Using NUnit 3 Test Adapter in Visual Studio

0

一つの方法として、動的に持っているソースコード内のトークンを検索と置換することです:nunit3-CONSOLE.EXEからのXML出力はまた、FXは、わかりやすい名前を使用しています実行前にテストライブラリをビルドコマンドラインmsbuildを使用します。高レベルのステップ

  1. は何が好きでfnr.exe replce _TOKENのようなコマンドラインツールを使用して、ソースにsometest_TOKENとしてテストケース名を定義しています。たとえば、sometest_build2145です。
  2. msbuildを使用してDLLをコンパイルします。たとえば、msbuild/t:REbuild mytestproj.slnです。その後、すべてのテストケースをmytestproj.dllに実行します。
関連する問題