C# net中的测试驱动开发和单元测试

C# net中的测试驱动开发和单元测试,c#,.net,unit-testing,testing,tdd,C#,.net,Unit Testing,Testing,Tdd,好的,我是一个新的.net开发人员,我在大学里做过一些,但大学毕业后做了Coldfusion的工作,现在已经转到MVC3的一个新项目,使用TDD、EF和整个九码 我试图用TDD来解决一个问题 首先,据我所知,TDD更多的是一种设计实践,而不是仅仅在编写代码之前编写单元测试的实际方式 我最困惑的是单元测试和TDD是如何共存的 我的TDD测试实际上是单元测试吗?或者我的TDD测试只是帮助我设计的一种方法,然后我仍然使用单元测试来覆盖代码 有人有什么想法吗?表面上看,TDD测试与单元测试非常相似。这并

好的,我是一个新的.net开发人员,我在大学里做过一些,但大学毕业后做了Coldfusion的工作,现在已经转到MVC3的一个新项目,使用TDD、EF和整个九码

我试图用TDD来解决一个问题

首先,据我所知,TDD更多的是一种设计实践,而不是仅仅在编写代码之前编写单元测试的实际方式

我最困惑的是单元测试和TDD是如何共存的

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


有人有什么想法吗?

表面上看,TDD测试与单元测试非常相似。这并不奇怪,因为您使用单元测试框架(如VisualStudioTests或NUnit)来创建这两种类型的测试。但TDD测试和单元测试之间存在差异

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

与验收测试一样,TDD测试用于驱动应用程序的创建。TDD测试的工作原理与小型验收测试类似。您可以创建一个TDD测试来表示接下来需要实现的应用程序功能。然而,与验收测试不同,TDD测试不是端到端测试。TDD测试不会与实时数据库或web服务器交互


请参阅本文。

表面上看,TDD测试与单元测试非常相似。这并不奇怪,因为您使用单元测试框架(如VisualStudioTests或NUnit)来创建这两种类型的测试。但TDD测试和单元测试之间存在差异

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

与验收测试一样,TDD测试用于驱动应用程序的创建。TDD测试的工作原理与小型验收测试类似。您可以创建一个TDD测试来表示接下来需要实现的应用程序功能。然而,与验收测试不同,TDD测试不是端到端测试。TDD测试不会与实时数据库或web服务器交互


请参阅本文。

TDD测试通常是单元测试,但并不总是。非单元测试的示例可能是使用的UI测试。考虑TDD的最简单方法是将其视为一种纪律,以确保尽可能多的业务和技术需求都以编程方式表达,这样您就可以一致地、定期地将它们应用到代码库中,以确保在进行更改时仍然满足需求


在实践中,这往往会导致不同的模式,有些人认为在您的体系结构中有更好的模式,通常是为了解耦,以允许隔离测试模块。在更严格的TDD环境中,首先开发测试以使其失败,然后开发代码以满足测试的情况并不少见。这一原则确保您的测试充分表达您需求的意图。

TDD测试通常是单元测试,但并不总是单元测试。非单元测试的示例可能是使用的UI测试。考虑TDD的最简单方法是将其视为一种纪律,以确保尽可能多的业务和技术需求都以编程方式表达,这样您就可以一致地、定期地将它们应用到代码库中,以确保在进行更改时仍然满足需求


在实践中,这往往会导致不同的模式,有些人认为在您的体系结构中有更好的模式,通常是为了解耦,以允许隔离测试模块。在更严格的TDD环境中,首先开发测试以使其失败,然后开发代码以满足测试的情况并不少见。这一原则确保您的测试充分表达您需求的意图。

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


根据维基百科的定义,它们当然属于单元测试的范畴:

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


根据维基百科的定义,它们当然属于单元测试的范畴:

主要区别在于,您在前面创建测试,指示您希望代码做什么,而不是在之后测试您已经编写的代码。因此,理论上,您的TDD测试应该已经涵盖了您编写的生产代码。纯TDD建议您不应该编写一行新的生产代码,除非您有一个失败的测试需要它。有了经验,你可以决定你的成功与否
您希望坚持这一原则。

主要区别在于,您在前面创建测试,指明您希望代码做什么,而不是在之后测试您已经编写的代码。因此,理论上,您的TDD测试应该已经涵盖了您编写的生产代码。纯TDD建议您不应该编写一行新的生产代码,除非您有一个失败的测试需要它。根据经验,你可以决定你想坚持这一原则的程度。

单元测试艺术的作者Roy Osherove对此有一段不错的视频:


《单元测试的艺术》一书的作者Roy Osherove对此有一段不错的视频:


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