粗略地说,单元测试是与测试代码隔离地测试代码的一部分。想到的直接优势是:
- 运行测试变得可自动化和可重复
- 与通过 GUI 的点击式测试相比,您可以进行更精细的测试
我的问题是,目前在工具方面的“最佳实践”是什么,以及何时何地使用单元测试作为日常编码的一部分?
让我们尝试在某种程度上与语言无关并涵盖所有基础。
粗略地说,单元测试是与测试代码隔离地测试代码的一部分。想到的直接优势是:
- 运行测试变得可自动化和可重复
- 与通过 GUI 的点击式测试相比,您可以进行更精细的测试
我的问题是,目前在工具方面的“最佳实践”是什么,以及何时何地使用单元测试作为日常编码的一部分?
让我们尝试在某种程度上与语言无关并涵盖所有基础。
您可能想查看三张索引卡和三张索引卡上的TDD以轻松记住测试驱动开发的本质:
卡#1。鲍勃大叔的三定律
卡#2:第一原则
卡片 #3:TDD 的核心
所谓的xUnit框架被广泛使用。它最初是作为 SUnit 为 Smalltalk 开发的,后来演变为 Java 的 JUnit,现在有许多其他实现,例如 .Net 的 NUnit。这几乎是一个事实上的标准——如果你说你正在使用单元测试,大多数其他开发人员会认为你的意思是 xUnit 或类似的。
“最佳实践”的一个很好的资源是Google 测试博客,例如最近一篇关于编写可测试代码的帖子就是一个极好的资源。特别是他们的“厕所测试”系列每周帖子非常适合在你的立方体或厕所周围张贴,所以你总是可以考虑测试。
xUnit 系列是单元测试的中流砥柱。它们被集成到 Netbeans、Eclipse 和许多其他 IDE 中。它们为单元测试提供了一个简单、结构化的解决方案。
我在编写测试时总是尝试做的一件事是尽量减少外部代码的使用。我的意思是:我尽量减少测试的设置和拆卸代码,并尽量避免使用其他模块/代码块。编写良好的模块化代码在设置和拆卸时不应该需要太多的外部代码。
NUnit 是适用于任何 .NET 语言的好工具。
单元测试可以通过多种方式使用:
不要忘记重构支持。.NET 上的 ReSharper 为丢失的代码提供自动重构和快速修复。这意味着,如果您编写对不存在的东西的调用,ReSharper 会询问您是否要创建缺失的部分。