gpt4 book ai didi

c# - NUnit TestCaseData 的参数数量错误

转载 作者:行者123 更新时间:2023-12-02 15:56:50 25 4
gpt4 key购买 nike

我正在尝试为我的测试设置一些测试用例:

public IEnumerable<TestCaseData> size_tests()
{
yield return new TestCaseData(new string[] { "XS", "XL", "M" })
.Returns(new SortedVariantAttributeModel {
Values = new string[] { "XS", "M", "XL" },
PrimaryValue = "XS"
});
}

[Test, TestCaseSource("size_tests")]
public SortedVariantAttributeModel Should_map_SortedVariantAttributes(string[] sizes)
{
// ...
}

当我尝试运行此测试时,我得到:

Test Failed - Should_map_SortedVariantAttributes("XS","XL","M")

Message: Wrong number of arguments provided

从错误来看,它似乎解开了数组并尝试将其应用于测试函数,但这当然会导致问题。我该如何解决这个问题?

最佳答案

要使其正常工作,您需要将参数包装在一个数组中,如下所示:new[] { new string[] { "XS", "XL", "M"} }。这会导致 NUnit 将字符串数组视为方法的第一个参数,而不是一系列字符串参数。

我相信您正在使用 NUnit 2.x,因为您的数据源不是静态的。我简化了您的代码并在 NUnit 2.6.4 和 3.4.1 中测试了解决方法。

public static IEnumerable<TestCaseData> Data()
{
yield return new TestCaseData(new[] { new string[] { "XS", "XL", "M" } });
yield return new TestCaseData(new[] { new string[] { "S", "M", "XXL", "L" } });
}

[TestCaseSource(nameof(Data))]
public void TestStringArrayArguments(string[] sizes)
{
Assert.That(sizes.Length, Is.GreaterThan(1));
}

关于c# - NUnit TestCaseData 的参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38970124/

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