[英]Unit testing a generic method
我已经编写了自定义的通用链接列表,并想测试各种方法。 例如我有包含方法
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为此生成了一个单元测试,该单元测试生成了这个存根。 我不确定应该在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行中,对Test方法进行哪些更改?
谢谢
更改方法以采用通用类型实例值,如下所示
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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.