3

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

    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 行中吗?

谢谢

4

1 回答 1

4

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

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");
于 2013-09-10T19:38:58.110 回答