.net - 您通过单元测试测试什么?

标签 .net asp.net-mvc unit-testing tdd

TDD 这些天似乎是每个人都在谈论的东西,我自己也尝试过一些,但我认为我没有理解这个想法。我正在掌握如何编写单元测试,但我不明白我的单元测试应该测试什么。

  1. 如果我有一个返回数据列表的操作方法,我应该验证什么?只是 View 名称正确,还是应该验证数据?
  2. 如果我也应该测试数据,我是否会编写相同的代码两次?如果我使用相同的方法来检索要比较的数据,那么测试数据有什么用?
  3. 我是否也应该测试添加/编辑数据的方法?如何验证记录是否已以正确的方式添加/编辑/删除?

我知道这是很多大问题,但我并没有通过阅读互联网上的文章而变得更加明智,因为它们似乎都关心如何测试,而不是什么

举个例子 - 我有(或者将要编写)一个 GuestbookController,其中包含用于查看、添加、编辑和删除帖子的方法。我需要测试什么?我该怎么做?

最佳答案

单元测试 (UT) != 测试驱动设计 (TDD)

这种困惑似乎相当普遍。 UT 就是关于代码覆盖率。 TDD 关注的是特性。它们不是同一件事[抱歉乔尔!]

使用 UT,您可以编写任何您想要的代码,然后返回并测试每个功能(甚至是一些微不足道的功能)。

使用 TDD,您可以选择下一个功能,然后首先为该功能编写测试。仅编写该功能的测试,测试覆盖率不相关。您首先编写测试以强制预先做出界面决策。然后编写代码以通过测试(记住“可能工作的最简单的事情”)。然后根据您所学到的知识重构代码。然后您继续执行下一个功能(大概是在 checkin 并重新运行所有单元测试之后)。

如果需要,可以使用 TDD 进行开发,然后返回并使用 UT 工具完成覆盖。如果您要创建类库或其他 API 供开发人员使用,则测试覆盖率越多越好;-)

如果您只是编写一个应用程序来完成五件特定的事情,那么仅 TDD 就足够了。

关于.net - 您通过单元测试测试什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/517977/

相关文章:

c# - 如何为每个已安装的实例生成新的 guid?

c# - 在 ASP.NET MVC 中处理发布请求

asp.net - 如何添加对 ASP.NET Core 1.0 MVC 项目的项目引用

c# - 如何在 Windows 窗体应用程序中创建全局错误处理程序?

c# - 从网页获取缩略图

asp.net-mvc - 何时使用 ViewModel 而不是 Model?

asp.net-mvc - 通过测试驱动开发开始大项目

php - 在 PHP 单元中创建模拟对象

javascript - Angular 单元测试 .catch block

.net - 使用单个标准响应对象创建 WCF Web 服务