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

问题描述 投票:0回答:1

我想对一系列不同的输入(复杂对象)进行多次测试。使用 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
作为字符串,而不是作为实际引用。

我必须抑制警告还是我做错了什么?

c# nunit
1个回答
2
投票

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

编译器将用变量名称替换

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

© www.soinside.com 2019 - 2024. All rights reserved.