gpt4 book ai didi

c# - 单元测试中的逻辑

转载 作者:行者123 更新时间:2023-11-30 12:14:20 25 4
gpt4 key购买 nike

我有这样的单元测试:

    [Test]
public void DataIn_NoOfRowsReached_CreatesSequentialData()
{
//Assert
MyLogic logic = SetupLogic();
logic.NoOfRows = 3;

logic.DataIn(1, "1,4,7");
logic.DataIn(2, "2,5,8");
logic.DataIn(3, "3,6,9");

CollectionAssert.AreEqual(new[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, logic.ExpectedValues);
}

每个 DataIn 调用都会根据 ID(第一个参数)将传入的数据添加到单独的列表中。当 NoOfRows 数等于 DataIn 输入 Id 时,它会将数据合并为顺序的。然后我进行测试以检查这一点。

我现在想使用测试用例,但如果不在测试方法中放置 if 语句和各种可选参数,我看不出有什么简单的方法可以做到这一点。我真的不想为各种场景重复测试。

NoOfRows 最大值为 6。

最佳答案

我相信这就是您要找的。利用 params keyword允许传入任意数量的字符串。

[Test]
public void DataIn_NoOfRowsReached_CreatesSequentialData()
{
MyGenericTest("1,4,7", "2,5,8", "3,6,9");
}

private void MyGenericTest(params string[] inputs)
{
//Assert
MyLogic logic = SetupLogic();
logic.NoOfRows = inputs.Length;

List<string> allNumbers = new List<string>();
for(int i = 0; i < inputs.Length; i++)
{
logic.DataIn(i + 1, inputs[i]);
allNumbers.AddRange(inputs[i].Split(',');
}

allNumbers.Sort();
CollectionAssert.AreEqual(allNumbers.Distinct(), logic.ExpectedValues);
}

这只是字符串排序...如果你有大于 9 的数字,你会想要 add your own compare function to the Sort() method .

关于c# - 单元测试中的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9788054/

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