听闻过TDD有一些时日了,加上之前看过的《敏捷开发的艺术》,是时候试着用这种方法来写一个程序。于是就谷歌到了ruby rspec,同是敏捷开发,但是却是BDD——行为驱动开发。
来自维基百科的简述
BDD的做法包括:
- 确立不同利益相关者要实现的远景目标
- 使用特性注入方法绘制出达到这些目标所需要的特性
- 通过由外及内的软件开发方法,把涉及到的利益相关者融入到实现的过程中
- 使用例子来描述应用程序的行为或代码的每个单元
- 通过自动运行这些例子,提供快速反馈,进行回归测试
- 使用“应当(should)”来描述软件的行为,以帮助阐明代码的职责,以及回答对该软件的功能性的质疑
- 使用“确保(ensure)”来描述软件的职责,以把代码本身的效用与其他单元(element)代码带来的边际效用中区分出来。
- 使用mock作为还未编写的相关代码模块的替身
手头上的工具及书籍包含以下(转载保留Phodal's
BlogPhodal'szenthink)
- 《Ruby元编程》
- 《Programming Ruby》
- 《重构:改善既有代码的设计》
- Mint Linux以及OpenSUSE Linux
- 《测试驱动开发的艺术》
Ruby Rspec
官方的介绍如下
RSpec is testing tool for the Ruby programming language. Born under the banner of Behaviour-Driven Development, it is designed to make Test-Driven Development a productive and enjoyable experience with features like:
- a rich command line program (the rspec command)
- textual descriptions of examples and groups (rspec-core)
- flexible and customizable reporting
- extensible expectation language (rspec-expectations)
- built-in mocking/stubbing framework (rspec-mocks)
简单的翻译一下就是
RSpec是Ruby编程语言的测试工具。在行为驱动开发的旗帜下诞生的,它的目的是使测试驱动开发一个富有成效和愉快的体验与功能,如:
- 丰富的命令行程序(the rspec command)
- 实例和组文字说明(rspec-core)
- 灵活和可定制的报告
- 可扩展的期望语言(rspec-expecation)
- 内置mocking/stubbing框架(rspec-mocks)
安装,理论上是可以直接用
sudo apt-get install ruby-rspec
实际上我觉得还是用
因为直接用Mint Linux上面的命令带来另外两个版本的ruby,最后在安装rails的时候,问题终于爆发了。
Ruby Rspec BDD
这部分参考了这里的文章
这里讲到的思想和TDD很像,也就是不断地通过测试。
添加任务到Rakefile
require 'rspec/core/rake_task'
task :default => :spec
desc "run all examples."
RSpec::Core::RakeTask.new(:spec)
创建目录spec
mkdir spec
gedit spec/spec_helper.rb
用来集中使用到的库
添加一个简单的类的测试
require 'spec_helper'
describe Hotel do
let(:hotel){Hotel.new("Photel",3,110)}
it "should return countcost of final" do
hotel.name.should be_a String
end
end
创建一个简单的类来通过测试
class Hotel
def initialize(name,rating,price)
@name=name
@rating=rating
@price=price
end
end
rake
这样的迭代过程用来开发程序算是一件不错的事。
Ruby Rake有感
这个算是我觉得Ruby比python 强大的另外一个吧,还有一个是OO的出神入化。
不过用makefile的话,也是不错的,对于python来说。
至于Ruby还是Rake,不过Rake也可以用于其他场合的构建。
分享到:
相关推荐
程序员常刷题规格 学习目标 ...然后你添加第三个功能并测试...只是第三个功能。 想象一下,如果您有一组针对您的代码运行的自动化规范,那么您可以查看您的新更改是否符合您的新需求以及在此之前出现的每
RSpec和Minitest匹配器来预防N 1查询问题
注意:此文件不是chm的,而是7个HTML文件。 在他们下载的chm始终打不开或有问题。 本人收集起了7个HTML文件打包rar。 使用Cucumber+Rspec玩转BDD(1)——用户注册 ...使用Cucumber+Rspec玩转BDD(7)——测试重构
程序员常刷题TDD、RSpec 和 Learn 介绍 目标 定义代码测试的目的。 阅读 RSpec 测试。 通过learn命令运行测试。 了解测试输出。 编写代码以使包含的测试通过。 定义测试 测试验证您编写的代码的行为并产生所需的结果...
:Ruby + RSpec入门用git克隆这个 repo: git clone https://github.com/kata-seeds/ruby-rspec-seed.gitcd ruby-rspec-seed安装依赖项并使用make运行测试: make您最终应该会看到 1 次测试运行和 0 次失败。...
rspec_api_documentation - 从RSpec自动生成API文档
原版The RSpec Book并附有源码
ruby(rails)单元测试相关的gem,rspec、cucumeber。BDD
Emoji-RSpec - 用于RSpec的自定义Emoji格式化程序
测试第一个Ruby-RSpec 3版设定说明分叉此回购将您的存储库版本克隆到本地计算机在本地计算机上,将cd插入终端中此仓库的根文件夹运行bundle install安装该项目需要的所有gem。练习入门要完成第一个练习,请遵循以下...
rspec_api_documentation, 从RSpec自动生成API文档 RSpec Doc为你的Rails API生成漂亮的。查看一个示例文件。更改请查看维基以了解最新的更改。安装将rspec_api_documentation添加到你的文件gem 'rspec_a
rspec出入门者学习理解,介绍的非常的详细、清楚; 欢迎下载学习~
rspec 下载请注意:英文文档
RSpec ::等待 等待RSpec中的条件 为什么RSpec :: Wait存在?... 但是, wait_for仍将接受一个块,因为它可能需要在等待时多次评估该块的内容。 describe Ticker do subject ( :ticker ) { Ticker
RSpec 所有的东西这是一个演示应用程序,用于展示如何使用 RSpec 和 Ruby 来测试其他语言的应用程序。 在这种情况下,我们正在测试一个用 Go 编写的简单服务器。 该项目包括:main.go Go 服务器。 它以pong消息响应 ...
Effective Ruby:改善Ruby程序的48条建议.pdf 、metaprogramming、Ruby元编程、Head First Rails 、Rails 指南、Ruby Best Practices、Ruby on Rails教程、ruby基础教程(中文第四版)、The RSpec Book
Ruby 代码覆盖率工具 Coco ,Coco 是一个 Ruby 的代码覆盖率工具,可通过在 RSpec 或者单元测试里通过简单的 req...
RSpec supports Test Driven Development in Ruby through the BDD lens, keeping your focus on design and documentation while also supporting thorough testing and quick fault isolation. Cucumber, RSpec's...
ruby on rails 的测试工具,敏捷开发工具。。。。
如果您使用其他Ruby版本管理器(或根本不使用),那么重要的是您拥有一个沙盒式gem环境,该环境不需要您使用sudo来安装gem,并且没有安装rspec库。 邦德勒 依赖项管理需要Bundler。 首先安装: gem install ...