TestCaseSource 产生 IDE0052 警告。如何避免?

TestCaseSource produces a IDE0052 warning. How to avoid it?

我想用复杂对象的不同输入列表做几个测试。使用 NUnit,我执行以下操作:

private static readonly IEnumerable<object> InputList = new List<object>
{
    new { aaa = 1, bbb = 2}, // Simplified example
    new { aaa = 1, bbb = 2},
    new { aaa = 1, bbb = 2},
};

[Test, TestCaseSource("InputList")]
public void Test(object testElement)
{
    // Whatever
}

但是,这样我会收到警告:IDE0052: Private memeber InputList can be removed as the value assigned to it is never read,这很清楚,因为 TestCaseSource 使用 InputList 作为字符串,而不是实际引用。

我是否必须取消警告或者我做错了什么?

[Test, TestCaseSource(nameof(InputList))]
public void Test(object testElement)
{
    // Whatever
}

编译器将用变量名替换nameof 表达式。这有几个优点:1)编译器识别对变量的引用(并且警告将被删除)2)在编译期间拼错变量名时你会意识到3)重命名变量更容易。