2017-12-05 8 views
1

NUnitが提供する機能を見つけるのに悩まされています。以前に見たことがほぼ確実ですが、私はそれを使うつもりだと思っていましたが、それをどこかにピンで固定する。複合型パラメータの実際の値をレポートでNUnitで表示する

我々はそうのように我々のテストを書いている:このアプローチの

[Test] 
public void Post_StakeToDifferetnSelectionsViaBetsBetIdEndpoint_ReturnsCorrectData(
     [ValueSource(typeof(JsonContextCache), nameof(JsonContextCache.RandomThreeUniqueSelecionIds))] string[] selectionIds, 
     [ValueSource(typeof(TestData), nameof(TestData.OddStyles))] OddStyle oddStyle, 
     [Values(true, false)] bool logged) 

問題は、我々は複合型でValueSourceまたはTestCaseSource属性を供給するとき(のようなstring[]、カスタムタイプ)NUnitのから、当社のCI環境での結果であるということです以下のようなので:私は何をしたいことは、配列の値を表示するには、代わりにこのSystem.String[]のですが、私は知らない

Post_StakeToDifferetnSelectionsViaBetsBetIdEndpoint_ReturnsCorrectData(System.String[],European,True) 

どのように私はNUnitのが私のためにそれを行うことができます。

+0

'JsonContextCache.RandomThreeUniqueSelecionIds'のコードを表示します。そこで、あなたはテストメソッドでアクセスできる文字列の配列を提供する必要があります。単一のIDが必要な場合は、配列の代わりに単一の文字列を指定します。 – HimBromBeere

+0

私は単一の文字列を必要としません、それをそのまま保ちたいのですが、型の代わりにパラメータの実際の値を表示します。 – kuskmen

+0

文字列* one * single *テストの配列を提供していますか、実際にはテストケースのセット*を提供していますか?テストメソッドを配列内の要素ごとに1回または1回実行しますか? – HimBromBeere

答えて

2

短い答えは:あなたがテストケースを組み立て、それらに名前を付けるために、完全にNUnitのまでそれを残し[TestCaseSource]を、使用しているため

それは、あなたの状況では不可能です。回避策がありますが、むしろ不便です。 HTTPSから編集

長い答え、:github.com/nunit/docs/issues/244:

あなたは、特定の状況ではNUnitので個々テストケースの名称を変更することができます。 1.使用プロパティを指定して、[TestCase]属性を指定します。 2. [TestCaseSource]属性を使用する場合、引数はTestCaseDataインスタンスを使用して指定します。ここでも、使用するプロパティはSetNameです。

上記の2つの欠点: 1.一度に1つのテストを行う必要があります。 2. [Values]または[ValueSource]を使用して引数を指定するときは、まったく使用できません。

NUnitが常に歴史的にアドバイスしてきた一般的な解決策は、引数として使用しているタイプのToStringを上書きすることです。明らかに、種類がstring[]の場合、オプションとして利用できません。

上記の問題に対する修正を実装しない限り、あなたのケースには適していません。すべての組み合わせを自分で綴り、

  1. 使用[TestCase]または[TestCaseSource]、それぞれの場合にSetNameを指定:検討する回避策。

  2. ラップstring[]はテストの目的で独自のタイプで、ToString()をオーバーライドして配列の内容を表示します。

関連する問題