2008-08-19 31 views
23

单元测试大体上是用测试代码隔离测试代码的位。浮现在脑海中,眼前的好处是:单元测试入门

  • 运行测试变得自动化,能和重复
  • 您可以在比更细粒度水平测试通过GUI
点和点击测试

Rytmis

我的问题是,在工具方面目前有哪些“最佳做法”,以及何时何地使用单元测试作为日常编码的一部分?

让我们试着对语言不可知和涵盖所有的基础。

回答

22

好吧,这里有一些谁不单单测试他应该...咳嗽的一些最佳做法。

  1. 确保您的测试试验one 件事,一件事而已。
  2. 随时编写单元测试。您最好写before您正在测试的代码。
  3. 请勿单元测试GUI。
  4. Separate your concerns
  5. 最小化测试的依赖关系。
  6. 模拟behviour与mocks
+0

约翰嗨,你可以解释为何你不单元测试GUI? – itsmatt 2008-09-17 19:05:51

1

xUnit系列是单元测试的中流砥柱。它们被集成到Netbeans,Eclipse和其他许多IDE中。它们为单元测试提供了一个简单的,结构化的解

我在编写测试时总会尝试做的一件事是尽量减少外部代码的使用。我的意思是:我尽量尽量减少测试的设置和拆卸代码,尽量避免使用其他模块/代码块。编写良好的模块化代码在安装和拆卸时不需要太多的外部代码。

3

所谓的xUnit框架被广泛使用。它最初是作为SUnit为Smalltalk开发的,演变成用于Java的JUnit,现在还有许多其他实现,例如用于.Net的NUnit。这几乎是事实上的标准 - 如果你说你正在使用单元测试,其他大多数开发人员会认为你的意思是xUnit或类似的。

3

“最佳实践”的一个很好的资源是Google Testing Blog,例如Writing Testable Code最近的帖子是一个很好的资源。具体来说,他们的“厕所测试”系列每周帖子非常适合贴在您的魔方或厕所周围,所以您始终可以考虑测试。

0

NUnit是适用于任何.NET语言的好工具。

单元测试可以以许多方式来使用:

  1. 测试逻辑的代码单元
  2. 增加分离。如果你不能完全测试一个函数或代码段,那么构成它的部分就太相互依赖了。
  3. 驱动发展,有些人写测试之前,他们编写的代码进行测试。这迫使你去思考一下你想要的代码,什么,然后给你的时候,你已经来达到的是一个明确的指导方针。
14

你可能想看看TDD on Three Index CardsThree Index Cards to Easily Remember the Essence of Test-Driven Development

卡#1。鲍勃叔叔的三条法则

  • 除了通过失败的测试之外,不写任何生产代码。
  • 只写足够的测试来证明失败。
  • 只写足够的产品代码来通过测试。

卡#2:首要原则

  • 快速:心灵-麻木快,在数百或数千每秒。
  • 隔离:该测试清楚地分离故障。
  • 重复:我可以反复运行它,它会通过或每次失败一样。
  • 自我验证:测试是明确地传递失败。
  • 及时:产于与小代码的变化步调一致。

卡#3:TDD

  • 红色的核心:测试失败
  • 绿色:测试通过
  • 重构:干净的代码和测试
0

不要忘记重构支持。 .NET上的ReSharper提供了对缺失代码的自动重构和快速修复。这意味着如果你写了一个不存在的东西,ReSharper会询问你是否想创建缺少的东西。