DynamicData - 无法将静态方法移动到另一个 class(Even Base class)
DynamicData - Unable to move the static method to another class (Even Base class)
我正在开发动态数据测试 (c#),如 https://www.meziantou.net/mstest-v2-data-tests.htm#using-dynamicdata 中所述。
通过将动态数据测试和静态方法保持在同一个 class 中,然后一切正常,但是当尝试将静态 class 移动到另一个 class 时(即使是 Base class),那么测试也不会 运行,我收到一条错误消息:
消息:值不能为空。
参数名称:方法 GetData
你能帮忙吗?
将方法移动到另一个 class 时,我也尝试将其设为 none-static,但这没有帮助。
[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#),如 https://www.meziantou.net/mstest-v2-data-tests.htm#using-dynamicdata 中所述。
通过将动态数据测试和静态方法保持在同一个 class 中,然后一切正常,但是当尝试将静态 class 移动到另一个 class 时(即使是 Base class),那么测试也不会 运行,我收到一条错误消息:
消息:值不能为空。 参数名称:方法 GetData
你能帮忙吗?
将方法移动到另一个 class 时,我也尝试将其设为 none-static,但这没有帮助。
[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 };
}
}