我在编写单元测试时遇到了一个非常有趣的问题。
我可以在测试代码中使用函数的同时测试函数吗?
例如,
如果我有一个 List<int>
具有称为 Add()
的函数的类.
我想测试一个目标列表对象,其中已有两个 int:1 和 2。 现在我添加第三个数字:3,并想断言该数字已成功添加。所以我写道:
public void TestMethod()
{
//initialize
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
//do operation
list.Add(3);
Assert.IsTrue(list.Contains(3));
}
但是,上面的测试用例,试图测试目标函数:Add(),已经使用了Add()来初始化。我认为这种相关性在某些情况下可能会导致一些问题,一般来说......
是否有任何测试理论表明我们不能这样做?
谢谢!
最佳答案
功能可能需要多个测试。在这种情况下,您将拥有一个仅测试单个 Add()
的函数,然后是上面的函数。只要两者都通过,您就可以(合理地)确信您的结果是可靠的。但是,如果第一次测试失败,则可能应该忽略第二次测试的结果。
不过,理想情况下,您可以访问所测试内容的内部状态,因此可以提供一种不同的方式来设置初始条件,而无需调用被测函数。
关于c# - 单元测试功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702616/