R2-2018  - 短横幅

软件工艺的单元测试

单元测试在软件开发中变得越来越受欢迎。但是,众多框架,工具和开发过程可能会令人困惑。此页面旨在帮助:

  • 阐明了与单元测试和嘲弄相关的不同术语,实践和概念
  • 指导在使用单元测试的早期阶段的开发人员

单元测试和嘲笑解释

什么是源代码的单位?

源代码的单位是可以测试代码的最小部分。在.NET语言中,这通常是一种方法或类。

什么是单位测试?

单元测试是测试源代码单元的过程,以验证它们是否正常工作。执行单元测试是一种确保申请的所有功能都在应的方式。单元测试通知开发人员当一个单元的变化干扰另一个单元的功能时。现代单元测试框架通常使用所测试的系统使用的相同代码来实现。这使得开发人员能够在C#中编写应用程序代码,以在C#中编写其单元测试。

看看了解单元测试视频有关其他信息。

什么是单位测试框架?

为简化单位测试过程的目的开发了单元测试框架。这些框架启用了创建测试夹具,它是具有特定属性的.NET类,使得测试赛道可以通过测试赛道拾取。

虽然可以在没有这样的框架的情况下执行单元测试,但该过程可能是困难的,复杂的并且非常手册。

有很多单位测试框架可用。每个框架都有自己的优点,选择一个取决于所需要的功能和开发团队的专业知识水平。单元测试框架的一些示例包括:

  • CMSTEST.
  • XUNIT.
  • 纳尼特
  • MSPEC.

什么是嘲笑?

嘲笑是在测试的单元具有外部依赖项时在单元测试中使用的过程。嘲笑的目的是隔离并专注于正在测试的代码,而不是外部依赖项的行为或状态。在模拟中,依赖项被模拟真实行为的紧密控制的替换对象所取代。有三种主要可能类型的替代物品 - 假货,存根和模型。

假货:假是一个对象,它将通过实现相同的界面来替换实际代码,但不与其他对象进行交互。通常,虚假是硬编码的,以返回固定结果。为了测试不同的用例,必须引入大量的假货。使用假货引入的问题是当修改接口时,也应修改所有实现此接口的假货。

存根:存根是一个对象,它将基于特定的输入返回特定结果,通常不会响应所编制的测试之外的任何内容。使用JustMock,您可以使用最少的代码在测试中创建一个存根,并清楚依赖性如何响应以及测试系统如何表现。

嘲笑:模拟是一个更复杂的存根版本。它仍将像存根一样返回值,但它也可以根据应该调用每种方法的次数,以哪种顺序和数据库数据库。使用JustMock,您可以只使用一行代码创建模拟,这使得测试更加理解。

有关嘲弄的更多信息以及存根,假货和模拟之间的差异阅读假货,存根和模仿博客帖子。

关于如何开始嘲笑的更实际的例子可以在其中找到做你的第一次嘲笑博客帖子。

什么是嘲弄框架?

模型框架用于生成像存根和模型等替换对象。通过隔离依赖项,嘲笑框架补充单元测试框架,但不是单位测试框架的替代品。通过隔离依赖项,它们可以帮助单位测试过程和辅助开发人员在写入更加集中和简洁的单位测试。测试还通过真正隔离正在测试的系统来执行更快。

什么是测试跑步者?

在单元测试框架添加设施以创建单元测试的情况下,仍需要执行测试以验证正在测试的系统的行为。测试赛跑者执行单元测试。大多数单位测试框架包括测试跑步者,它们从简单的命令行跑步者因图形接口而异。

一些工具喜欢Visual Studio开发人员生产力工具能够运行许多类型的单位测试。

有关测试框架,模拟工具和测试跑步机之间的差异的其他信息可以在其中找到为什么嘲笑事项博客帖子。

代码第一 - 测试最终开发

代码首先是最受欢迎和广泛使用的方法。它暗示首先写入代码,然后写入确保代码功能的测试。甚至开发人员通常练习其他方法有时会在编写简单的一次性应用程序时使用这种方法。

测试第一 - 测试驱动的开发(TDD)

测试第一种方法意味着在编写实际代码之前写入单元测试。此过程迫使开发人员思考该单元的界面和预期结果。使用此方法时是否正确写入代码是明显的。

测试驱动的开发基于测试第一方法,但通过引入重构。TDD具有以下规定的一组步骤:

  1. 写入自动单元测试,最初将失败用于实现的新功能。使用模拟对象站立依赖项。
  2. 写入测试通过所需的最小代码。代码不必是完美的,它将在后来精制。
  3. 重构(或清理)代码或将其他用户案例添加到测试中
  4. 确保测试仍然通过。
  5. 重复

重构和重新运行测试的目的是帮助开发人员提供更好的代码质量。如果跳过重构步骤,则可能存在一些重复的代码,因此干(不要重复自己)原则将被侵犯。如果测试不断地重新运行,则可能导致错误的测试可能发生在新的代码或先前的重构。

由于TDD要求每个代码单元之前由描述其功能的测试,使用此方法意味着在YAGNI(您不需要它)原则或确保确保所需的每个功能。

行为驱动的开发(BDD)

行为驱动的开发基于TDD,但它也解决了使用TDD构成的一些问题 - 在哪里开始,何时何地测试,在循环中测试多少以及在测试中调用的内容。BDD专注于测试单位的行为要求。

BDD使用无处不在的语言来促进开发人员和利益相关者之间的沟通。

以下是BDD修改单元测试过程的方式:

  1. 使用自动化测vwin信誉开户试进行反馈和回归测试。
  2. 使用“当”以描述正在测试的动作。
  3. 使用“应该”来描述代码中预期的行为。
  4. 使用“确保”描述所测试代码范围之外的职责。
  5. 使用模拟对象站立依赖关系。

了解有关TDD,BDD和固体原则的更多信息为什么坚实的事项博客帖子。

建议单位测试框架

.NET开发人员可以利用可用于下载的众多免费单元测试框架,包括MSTEST(Visual Studio的一部分),Nunit,MBUNIT和XUnit。后三个是开源的,并且具有图形和命令行测试跑步者。

有关如何开始使用这些工具的更多信息阅读我们的博客文章nunit,nunit.should和justmock入门

建议嘲笑框架

可以手动创建和维护模拟对象,但此过程非常耗时,最终是不良的。
一个完整的嘲弄框架,如justmock.使开发人员能够专注于测试所测试的系统并忘记分散注意力的嘲笑细节。当基于单元测试中的简单配置运行测试时,在内存中自动创建模拟对象。没有“物理”模拟对象必须保持在项目变化中。

JustMock甚至进一步进一步且不强迫开发人员区分“模拟”和“存根”。使用JustMock,有一个易于使用的API,适用于所有可能的嘲笑需求。虽然是可选的断言呼叫,但不通过替换对象的不同施工技术来完成行为规范。

JustMock有一个免费版,justmock lite.但是,除了升高的嘲笑之外,它还提供了JustMock的所有功能。JustMock Lite适用于用虚线耦合的代码和设计用于可测试性的项目进行嘲笑。但是,如果开发团队正在处理遗留或紧密耦合代码,justmock,全版是最好的选择,因为升高的嘲弄设计用于测试难以测试的紧密耦合代码。

进步Telerik Justmock.

产品概述 尝试

下一步

下载免费试用

专用技术支持。

检查定价

购买个人产品或任何捆绑包

建议一个特征

帮助我们塑造我们的路线图。