【问题标题】:Test Driven Development and Unit Tests in .net.net 中的测试驱动开发和单元测试
【发布时间】:2011-07-21 02:48:16
【问题描述】:

好的,所以我是一个新的 .net 开发人员,我在大学做过一些工作,但从大学毕业后从事 Coldfusion 工作,现在已经切换到 MVC3 中的一个新项目,使用 TDD、EF,整个九码。

我正试图解决 TDD 的一个问题。

首先,据我了解,TDD 更像是一种“设计实践”,而不是仅仅在代码之前编写单元测试的实际方式?

我对单元测试和 TDD 如何共存感到困惑。

我的 TDD 测试实际上是单元测试,还是我的 TDD 测试只是帮助我设计的一种方式,然后我仍然使用单元测试来覆盖代码?

有人有什么想法吗?

【问题讨论】:

  • 单元测试是 TDD 的有益副产品。 TDD 旨在以小增量指定-实现-重组。如果遵循得当,您的代码通常会在最后被自动测试覆盖 90% 以上。获取贝克的书以获取更多信息。

标签: c# .net unit-testing testing tdd


【解决方案1】:

TDD 测试通常(但不总是)是单元测试。非单元测试的示例可能是使用 WaitiN 的 UI 测试。考虑 TDD 的最简单方法是将其视为一门确保尽可能多地以编程方式表达您的需求(业务和技术需求)的学科,以便您可以始终如一地定期将它们应用于您的代码库以确保当您进行更改时,您仍在满足要求。

在实践中,这往往会导致您的架构中出现不同的(有些人认为更好)模式,通常倾向于解耦以允许单独测试模块。在更严格的 TDD 环境中,首先开发您的测试(以致它失败),然后开发您的代码以满足您的测试的情况并不少见。此规则可确保您的测试充分表达您的需求意图。

【讨论】:

    【解决方案2】:

    TDD 测试绝对可以是单元测试。

    根据维基百科,它们肯定属于“单元测试”的定义:http://en.wikipedia.org/wiki/Unit_testing

    【讨论】:

      【解决方案3】:

      从表面上看,TDD 测试与单元测试非常相似。这并不奇怪,因为您使用 Visual Studio Tests 或 NUnit 等单元测试框架来创建这两种类型的测试。但是TDD测试和单元测试是有区别的。

      与单元测试一样,TDD 测试也可用于回归测试。您可以使用 TDD 测试立即确定代码更改是否破坏了现有的应用程序功能。但是,与单元测试不同的是,TDD 测试不一定要单独测试一个代码单元。

      与验收测试一样,TDD 测试用于推动应用程序的创建。 TDD 测试类似于小型验收测试。您创建一个 TDD 测试来表达接下来需要实现的应用程序功能。但是,与验收测试不同,TDD 测试不是端到端测试。 TDD 测试不与实时数据库或 Web 服务器交互。

      请参阅here 获取文章。

      【讨论】:

        【解决方案4】:

        Roy Osherove(单元测试艺术的作者)有一个不错的视频:

        Understanding Test Driven Development

        【讨论】:

          【解决方案5】:

          主要区别在于您是预先创建测试(表明您希望代码做什么)而不是事后(测试您已经编码的内容)。所以理论上,您的 TDD 测试应该已经涵盖了您编写的生产代码。纯 TDD 建议您不应该编写一行新的生产代码,除非您有一个失败的测试需要它。凭借经验,您可以决定要坚持该原则的程度。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-08-24
            • 2011-07-29
            • 2012-07-25
            • 1970-01-01
            • 1970-01-01
            • 2010-11-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多