行为驱动开发(英语:Behavior-driven development,缩写BDD)是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。BDD最初是由Dan North在2003年命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应。在过去数年里,它得到了很大的发展。


2009年,在伦敦发表的“敏捷规格,BDD和极限测试交流”[3]中,Dan North对BDD给出了如下定义: BDD是第二代的、由外及内的、基于拉(pull)的、多方利益相关者的(stakeholder)、多种可扩展的、高自动化的敏捷方法。它描述了一个交互循环,可以具有带有良好定义的输出(即工作中交付的结果):已测试过的软件。


BDD的重点是通过与利益相关者的讨论取得对预期的软件行为的清醒认识。它通过用自然语言书写非程序员可读的测试用例扩展了测试驱动开发方法。行为驱动开发人员使用混合了领域中统一的语言的母语语言来描述他们的代码的目的。这让开发者得以把精力集中在代码应该怎么写,而不是技术细节上,而且也最大程度的减少了将代码编写者的技术语言与商业客户、用户、利益相关者、项目管理者等的领域语言之间来回翻译的代价。


Dan North创造了首个BDD框架:JBehave;之后是Ruby语言的基于故事的RBehave,后来被纳入了RSpec项目。他还与大卫赫利姆斯基、Aslak Hellesøy及其他人开发了RSpec,并一起编写了《The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends》。RSpec中第一个基于故事的框架,后来被主要由Aslak Hellesøy开发的Cucumber取代。


2008 年,参与了围绕BDD进行的首轮讨论的克里斯马茨,提出了特性注入(Feature Injection)的想法,使BDD可以覆盖分析空间并提供从初期的展望到编码和发布的整个软件生命周期过程的改造。   --来源维基百科

RSpec环境

首先,您将需要在计算机上安装Ruby。但是,如果您还没有做过,则可以从主要的Ruby网站下载并安装Ruby- Ruby

如果要在Windows上安装Ruby,则应在此处安装Windows的Ruby安装程序- http://www.rubyinstaller.org

对于本教程,您仅需要文本编辑器,例如记事本和命令行控制台。此处的示例将在Windows上使用cmd.exe。

要运行cmd.exe,只需单击"开始"菜单并键入" cmd.exe",然后按回车键。

在cmd.exe窗口的命令提示符处,键入以下命令,以查看您正在使用的Ruby版本-

ruby -v

您应该看到以下看起来与此类似的输出-

ruby 2.2.3p173 (2015-08-18 revision 51636) [x64-mingw32]

本教程中的示例将使用Ruby 2.2.3,但是任何高于2.0.0的Ruby版本都足够。接下来,我们需要为您的Ruby安装安装RSpec gem。 gem是一个Ruby库,您可以在自己的代码中使用它。为了安装gem,您需要使用 gem 命令。

无涯教程网

现在安装Rspec gem。返回您的cmd.exe窗口并键入以下内容-

gem install rspec

您应该具有已安装的从属gem列表,这些是rspec gem需要正确运行的gem。在输出的末尾,您应该看到如下所示的内容:

Done installing documentation for diff-lcs, rspec-support, rspec-mocks,
   rspec-expectations, rspec-core, rspec after 22 seconds 
6 gems installed

如果您的输出看起来不完全相同,请不要担心。另外,如果您使用的是Mac或Linux计算机,则可能需要使用 sudo 运行 gem install rspec 命令或使用HomeBrew或RVM之类的工具来安装rspec。

Hello World

首先,我们创建一个目录(文件夹)来存储我们的RSpec文件。在您的cmd.exe窗口中,键入以下内容-

cd\

然后输入-

mkdir rspec_tutorial

最后,键入-

cd rspec_tutorial

在这里,我们将创建另一个名为spec的目录,方法是输入-

mkdir spec

我们将RSpec文件存储在此文件夹中。 RSpec文件被称为规范。如果这让您感到困惑,则可以将规格文件视为测试文件。 RSpec使用术语" spec",这是" specification"的缩写。

由于RSpec是BDD测试工具,因此目标是专注于应用程序执行的操作以及它是否遵循规范。 RSpec旨在明确目标代码是否行为正确换句话说遵循规范。

回到我们的Hello World代码。打开文本编辑器并添加以下代码-

链接:https://www.learnfk.com/article-rspec/rspec_introduction

来源:LearnFk无涯教程网

class HelloWorld

   def say_hello 
      "Hello World!"
   end
   
end

describe HelloWorld do 
   context “When testing the HelloWorld class” do 
      
      it "should say 'Hello World' when we call the say_hello method" do 
         hw = HelloWorld.new 
         message = hw.say_hello 
         expect(message).to eq "Hello World!"
      end
      
   end
end

接下来,将其保存到上面创建的spec文件夹中名为hello_world_spec.rb的文件中。现在回到您的cmd.exe窗口,运行以下命令-

rspec spec spec\hello_world_spec.rb

命令完成后,您应该看到如下所示的输出:

Finished in 0.002 seconds (files took 0.11101 seconds to load) 
1 example, 0 failures

恭喜,您刚刚创建并运行了您的第一个RSpec单元测试!

在下一节中,我们将继续讨论RSpec文件的语法。

这一章你学到了什么?来做个笔记,好记忆不如烂笔头! 如果觉得对您有帮助,麻烦帮分享给您的朋友。

祝学习愉快! (如果觉得不正确,选中要修改的内容->右键->编辑)

点我分享笔记