gpt4 book ai didi

c# - 如何将 DateTime 设置为 ValuesAttribute 进行单元测试?

转载 作者:IT王子 更新时间:2023-10-29 04:26:42 24 4
gpt4 key购买 nike

我想做这样的事情

[Test]
public void Test([Values(new DateTime(2010, 12, 01),
new DateTime(2010, 12, 03))] DateTime from,
[Values(new DateTime(2010, 12, 02),
new DateTime(2010, 12, 04))] DateTime to)
{
IList<MyObject> result = MyMethod(from, to);
Assert.AreEqual(1, result.Count);
}

但是我收到关于参数的以下错误

An attribute argument must be a constant expression, typeof expression or array creation expression of an

有什么建议吗?


更新:关于 NUnit 2.5 中的参数化测试的好文章
http://www.pgs-soft.com/new-features-in-nunit-2-5-part-1-parameterized-tests.html

最佳答案

除了膨胀单元测试之外,您还可以使用 TestCaseSource 属性卸载 TestCaseData 的创建。

TestCaseSource 属性允许您在类中定义一个方法,该方法将由 NUnit 调用,并且在该方法中创建的数据将传递到您的测试用例中。

此功能在 NUnit 2.5 中可用,您可以了解更多信息 here ...

[TestFixture]
public class DateValuesTest
{
[TestCaseSource(typeof(DateValuesTest), "DateValuesData")]
public bool MonthIsDecember(DateTime date)
{
var month = date.Month;
if (month == 12)
return true;
else
return false;
}

private static IEnumerable DateValuesData()
{
yield return new TestCaseData(new DateTime(2010, 12, 5)).Returns(true);
yield return new TestCaseData(new DateTime(2010, 12, 1)).Returns(true);
yield return new TestCaseData(new DateTime(2010, 01, 01)).Returns(false);
yield return new TestCaseData(new DateTime(2010, 11, 01)).Returns(false);
}
}

关于c# - 如何将 DateTime 设置为 ValuesAttribute 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344679/

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