c# - 单元测试功能

标签 c# visual-studio unit-testing

我在编写单元测试时遇到了一个非常有趣的问题。

我可以在测试代码中使用函数的同时测试函数吗?

例如,

如果我有一个 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/

相关文章:

unit-testing - 隔离框架(Moq、RhinoMock 等)是否会导致测试过度规范?

c# - 类似于 Javascript 的 WinForms 模态窗口

asp.net-mvc - 如何修复错误类型或命名空间名称 'Linq' 在命名空间 'System' 中不存在

visual-studio - 在VS2008中运行批处理文件

c++ - Qt单元测试依赖问题

unit-testing - 单元测试包含多个提交按钮的 Flask 表单

c# - 如何在 Asp.net MVC 5 中填充没有 Entity Framework 的模型

c# - hibernate 。在同一 session 中创建后包为空

c# - 在抽象类中有一个构造函数好吗?

c# - Visual Studio 2019 : Shortcut key to collapse this method only