在ValueSourceAttribute上指定的sourceName必须引用非空静态字段,属性或方法
问题描述:
我试图使用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.
什么会导致此问题?我会很感激任何帮助。
答
如果值是在另一个类中定义的,你应该提供它作为参数太键入属性
[Test]
public void TestOne(
[ValueSource(nameof(Formats))] string format,
[ValueSource(typeof(DocumentFactory), nameof(DocumentFactory.Documents))] IDocument document)
{
document.Should().NotBeNull();
}
没有提供一个类型,NUnit的将使用当前类的默认类型的类型,这就是为什么Formats
作品。
+0
工程就像一个魅力。谢谢你指出这个错误。 – bxfvgekd
您应该提到只有在另一个类中声明'Documents'属性时才会出现此问题。 – Fabio
@Fabio是的,它是在另一个类中声明的,是否有可能解决这个问题? – bxfvgekd