Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 单元测试入门_Unit Testing - Fatal编程技术网

Unit testing 单元测试入门

Unit testing 单元测试入门,unit-testing,Unit Testing,粗略地说,单元测试是在与测试代码隔离的情况下测试代码的各个部分。我想到的直接好处是: 运行测试变得自动化和可重复 您可以通过GUI在比点击测试更细粒度的级别上进行测试 我的问题是,在工具方面,以及在何时何地将单元测试作为日常编码的一部分,当前的“最佳实践”是什么 让我们尽量做到语言不可知,涵盖所有基础。xUnit家族是单元测试的支柱。它们被集成到Netbeans、Eclipse和许多其他IDE中。它们为单元测试提供了一个简单、结构化的解决方案 在编写测试时,我经常尝试做的一件事就是尽量减少

粗略地说,单元测试是在与测试代码隔离的情况下测试代码的各个部分。我想到的直接好处是:

  • 运行测试变得自动化和可重复
  • 您可以通过GUI在比点击测试更细粒度的级别上进行测试

我的问题是,在工具方面,以及在何时何地将单元测试作为日常编码的一部分,当前的“最佳实践”是什么


让我们尽量做到语言不可知,涵盖所有基础。

xUnit家族是单元测试的支柱。它们被集成到Netbeans、Eclipse和许多其他IDE中。它们为单元测试提供了一个简单、结构化的解决方案


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

所谓的框架被广泛使用。它最初是作为SUnit为Smalltalk开发的,后来演变为JUnit for Java,现在有许多其他实现,如NUnit for.Net。这几乎是一个事实上的标准——如果你说你在使用单元测试,大多数其他开发人员会认为你指的是xUnit或类似的工具。

一个关于“最佳实践”的好资源是,例如最近发布的一篇文章是一个非常好的资源。特别是他们的“厕所测试”系列每周帖子非常适合在你的立方体或厕所周围发布,因此你可以随时考虑测试

好的,这里有一些最佳实践,来自一些没有尽可能多地进行单元测试的人……咳嗽

  • 确保你的测试是正确的 只有一件事
  • 编写单元测试。最好是编写测试所针对的代码
  • 不要对GUI进行单元测试
  • 尽量减少测试的依赖性
  • 模仿贝维乌尔

  • NUnit是任何.NET语言的好工具

    单元测试可以通过多种方式使用:

  • 测试逻辑
  • 增加代码单元的分隔。如果你不能完全测试一个函数或一段代码,那么组成它的部分就太相互依赖了
  • 在驱动开发时,有些人在编写要测试的代码之前先编写测试。这迫使您考虑您希望代码做什么,然后在何时实现这一点上为您提供明确的指导
  • 您可能需要查看和:

    卡#1。鲍勃叔叔的三定律

    • 除了通过失败的测试外,不要编写生产代码
    • 仅编写足以证明失败的测试
    • 只编写足够的生产代码以通过测试
    卡#2:首要原则

    • 快:令人麻木的快,如每秒数百或数千次
    • 隔离:测试可清楚地隔离故障
    • 可重复:我可以重复运行,每次都会以相同的方式通过或失败
    • 自我验证:测试明确通过失败
    • 及时:通过微小的代码更改同步生成
    卡#3:TDD的核心

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

    不要忘记重构支持。NET上的ReSharper为丢失的代码提供了自动重构和快速修复。这意味着,如果您对不存在的东西编写调用,ReSharper将询问您是否要创建缺少的部分。

    嗨,John,您能否详细说明为什么不对GUI进行单元测试?是的,请详细说明为什么不应测试GUI。您是否在GUI上运行不同的行为类型的测试?