gpt4 book ai didi

c# - 单元测试通用方法

转载 作者:行者123 更新时间:2023-11-30 22:13:58 25 4
gpt4 key购买 nike

我已经编写了自定义通用链表并想测试各种方法。例如我有 Contains 方法

    public bool Contains(T item)
{
lock (this)
{
Node<T> currentNode = firstNode;
while (currentNode != null)
{
if (currentNode.Item != null)
{
if (currentNode.Item.Equals(item))
{
return true;
}
}
currentNode = currentNode.Next;
}
return false;
}
}

我使用 MSTest 为此生成了一个单元测试,它生成了这个 stub 。我不确定我应该在 TODO 行放什么??

    public void AddTestHelper<T>()
{
LinkedList<T> target = new LinkedList<T>(); // TODO: Initialize to an appropriate value
T item = default(T); // TODO: Initialize to an appropriate value
target.Add(item);
Assert.AreEqual(target.Contains(item), true);
}

[TestMethod()]
public void AddTest()
{
AddTestHelper<int>(); // my lines
AddTestHelper<object>(); //my lines
}

但是 AddTestHelper 或 AddTestHelper 失败,因为 default(T) 给出 null,Contains() 方法返回 false 并且测试失败。

我是单元测试的新手,不确定如何测试这样的通用方法。有人可以告诉我在 TODO 行中特别是测试方法需要做哪些更改吗??

谢谢

最佳答案

更改方法以获取泛型类型实例值,如下所示

public void AddTestHelper<T>(T item)
{
LinkedList<T> target = new LinkedList<T>();
target.Add(item);
Assert.AreEqual(target.Contains(item), true);
}

所以在代码中改用实例

所以在你的测试中你可以做

 AddTestHelper<int>(12);    

AddTestHelper<string>("Test");

关于c# - 单元测试通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727415/

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