2017-10-18 18 views
0

私のテストにValueSourceAttributeを使用しようとしています。ここでValueSourceAttributeで指定されたsourceNameは、nullではない静的フィールド、プロパティまたはメソッドを参照する必要があります

を例

[Test] 
     public async Task TestDocumentsDifferentFormats(
      [ValueSource(nameof(Formats))] string format, 
      [ValueSource(nameof(Documents))] IDocument document) 
     { 

で興味深いのは、しかし、それはそれは同じように定義されていても、第二引数を解決することはできません、Formatsリスト(最初の引数)が完璧に動作していることです。ここで

は、私はドキュメント静的リスト

public class DocumentFactory 
    { 
     public static readonly List<IDocument> Documents= 
      new List<IDocument> 
      { 
       // Init documents 
      }; 
    } 

を定義した。しかし、私は私のテストを実行しようとすると、エラーがスローされます方法です。

The sourceName specified on a ValueSourceAttribute must refer to a non null static field, property or method. 

この問題の原因は何ですか?私はどんな助けにも感謝しています。

+0

この問題は、 'Documents'プロパティが別のクラスで宣言されている場合にのみ発生することに注意してください。 – Fabio

+0

@Fabioはいそれは別のクラスで宣言されていますが、この問題を解決することは可能でしょうか? – bxfvgekd

答えて

1

値は別のクラスで定義されている場合は、それが種類を設けることなく、属性

[Test] 
public void TestOne(
    [ValueSource(nameof(Formats))] string format, 
    [ValueSource(typeof(DocumentFactory), nameof(DocumentFactory.Documents))] IDocument document) 
{ 
     document.Should().NotBeNull(); 
} 

のためのパラメータとして、あまりにも、型の提供する必要があり、NUnitのは、デフォルトのタイプとして、現在のクラスの型を使用しますが、それはなぜFormats作品です。

+0

魅力的な作品です。間違いを指摘していただきありがとうございます。 – bxfvgekd

関連する問題