我对行为驱动的开发非常陌生,我试图把我的注意力集中在一些基本的东西上:测试系统和规范系统之间的区别。
到目前为止,我一直在使用基于Ruby的minitest/test库,其中典型的单元测试看起来如下所示:
require "minitest/test"
class TestMeme < Minitest::Test
def test_that_kitty_can_eat
assert_equal "OHAI!", @meme.i_can_has_cheezburger?
end
end另一方面,来自minitest/spec的规范如下所示:
require "minitest/autorun"
describe Meme do
describe "when asked about cheeseburgers" do
it "must respond positively" do
@meme.i_can_has_cheezburger?.must_equal "OHAI!"
end
end
end那么测试和规范到底有什么区别呢?我应该选择,还是两者兼用?
发布于 2013-07-30 14:50:37
你所展示的只是测试的风格。您可以使用最小的API创建测试,也可以使用规范DSL创建测试。正如您所指出的,它们在功能上是等价的。两者之间的区别在于偏好。
更大的问题是TDD和BDD。两人都主张通过编写测试来驱动软件的设计。首先编写一个失败的测试,然后只编写通过测试所需的代码,然后重构代码以使其正确,同时保持测试通过。这被称为TDD循环。
BDD更进一步,指定开发人员如何与用户交互来定义开发人员工作的故事。它还主张为模拟提供一个与大多数TDD实践者不同的角色。但是,与两种方法都同意的非常大的领域相比,这些差别很小。
您可以使用规范样式的测试来练习TDD,也可以用测试样式的测试来练习BDD。您可以使用规范样式的describe和it块与assert_*断言进行混合和匹配,也可以使用must_*期望测试样式类和方法定义。测试风格和规范风格的语法之间的区别是肤浅的。
发布于 2013-07-30 08:46:01
BDD测试是业务分析师友好的单元测试,而单元测试只是对开发人员友好的测试。BDD定义了一种在开发人员和巴斯之间进行交互的语言。
此外,理想情况下,BA可以生成一个面向人的、但可以自动执行的文档,与敏捷很好地集成在一起,格式化为用户故事。
我认为你只需要多读一些关于BDD的文章,wiki有一篇好文章。
https://stackoverflow.com/questions/17941747
复制相似问题