繁体   English   中英

单元测试通用方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM