gpt4 book ai didi

c# - DataTestMethods 的非编译时间常量

转载 作者:行者123 更新时间:2023-11-30 18:16:39 25 4
gpt4 key购买 nike

如何将 [DataTestMethod] 与非编译时常量的 [DataRow(...)] 结合使用?示例:

[DataTestMethod]
[DataRow(new DateTime(2000, 1, 1), "2000-01-01")]
[DataRow(new DateTime(2000, 2, 1), "2000-02-01")]
public void TestTime(DateTime dateTime, string expected) {
Assert.AreEqual(dateTime.ToString("yyyy-MM-dd"), expected);
Assert.AreEqual(dateTime.ToString("yyyy-MM-dd"), expected);
}

这将在 new DateTime(...) 上引发编译错误,因为这不是编译时常量。

最佳答案

您只能在属性中指定编译时常量,因此您不能像DataRow 那样直接向测试方法提供非常量数据。但是,您可以使用 DynamicData您可以在其中指定可以检索非常量数据的方法或属性的属性。

例如;

[DynamicData(nameof(GetTestData), DynamicDataSourceType.Method)]
[DataTestMethod]
public void TestFoo_Bar_ReturnsExpected(decimal x, decimal y, decimal expectedResult)
{
var foo = new Foo();

var outcome = foo.Bar(x, y);

Assert.AreEqual(expectedResult, outcome);
}

public static IEnumerable<object[]> GetTestData()
{
yield return new object[] { 0M, 5M, 0M };
yield return new object[] { 5M, 5M, 25M };
}

关于c# - DataTestMethods 的非编译时间常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997718/

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