2017-10-18 85 views
0

我试图使用ValueSourceAttribute进行测试。在ValueSourceAttribute上指定的sourceName必须引用非空静态字段,属性或方法

下面是一个例子

[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

相关问题