gpt4 book ai didi

c# - DynamicData - 无法将静态方法移动到另一个类(甚至基类)

转载 作者:行者123 更新时间:2023-12-04 04:29:58 26 4
gpt4 key购买 nike

我正在开发一个动态数据测试 (c#),如 https://www.meziantou.net/mstest-v2-data-tests.htm#using-dynamicdata 中所述。

通过将动态数据测试和静态方法保留在同一个类中,然后一切正常,但是当尝试将静态类移动到另一个类(甚至基类)时,测试不会运行并且我收到错误信息:

消息:值不能为空。
参数名称:方​​法GetData

你能帮忙吗?

将方法移至另一个类时,我也尝试将其设为非静态,但这无济于事。

[TestClass]
public class MathTests
{
[DataTestMethod]
[DynamicData(nameof(GetData), DynamicDataSourceType.Method)]
public void Test_Add_DynamicData_Method(int a, int b, int expected)
{
var actual = MathHelper.Add(a, b);
Assert.AreEqual(expected, actual);
}

public static IEnumerable<object[]> GetData()
{
yield return new object[] { 1, 1, 2 };
yield return new object[] { 12, 30, 42 };
yield return new object[] { 14, 1, 15 };
}
}

最佳答案

对包含目标数据源的类型的属性使用备用构造函数

例如

[TestClass]
public class MathTests
{
[DataTestMethod]
[DynamicData(nameof(ExternalClass.GetData), typeof(ExternalClass), DynamicDataSourceType.Method)]
public void Test_Add_DynamicData_Method(int a, int b, int expected)
{
var actual = MathHelper.Add(a, b);
Assert.AreEqual(expected, actual);
}

}

public class ExternalClass
{
public static IEnumerable<object[]> GetData()
{
yield return new object[] { 1, 1, 2 };
yield return new object[] { 12, 30, 42 };
yield return new object[] { 14, 1, 15 };
}
}

关于c# - DynamicData - 无法将静态方法移动到另一个类(甚至基类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57075409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com