3 testing tdd unit-testing rspec ruby-on-rails
我感兴趣的Test::Unit和Rspec.
有人可以解释一下两者之间的主要区别 - 就其运作的原则而言.
max*_*max 19
Test :: Unit更像是像JUnit这样的经典TDD工具.测试是作为类编写的(因为这是在Java/C++中完成的).
对于那些习惯于经典测试工具的人来说,Test :: Unit更容易接近.
Test::Unit是内置的Ruby测试库,但被认为是死的(开发已经停止).它已经被Minitest所取代.
require_relative "simple_number"
require "test/unit"
class TestSimpleNumber < Test::Unit::TestCase
def test_add
assert_equal(4, SimpleNumber.new(2).add(2) )
end
def test_multiply
assert_equal(6, SimpleNumber.new(2).multiply(3) )
end
end
Run Code Online (Sandbox Code Playgroud)
RSpec是一种特定于域的语言,它使用ruby语言的灵活性来创建"更具可读性"的测试.
RSpec的早期版本对此有点太过分了,并且使用了monkeypatched核心Ruby类.
RSpec更倾向于行为驱动开发的哲学,您可以在其中描述应用程序与TDD中组件的行为,您可以将应用程序切片为最小的组件.
require "spec_helper"
require "lib/simple_number"
describe SimpleNumber do
describe "#add" do
it "adds a value to the sum" do
expect(SimpleNumber.new(2).add(2)).to eq(4)
end
end
describe "#multiply" do
it "multiplies with the value" do
expect(SimpleNumber.new(2).multiply(3)).to eq(6)
end
end
end
Run Code Online (Sandbox Code Playgroud)
哪个更好?
这是一个意见问题.
Minitest最近有一点复苏,因为它被认为更快更简单.然而,测试可能非常简洁,真正减慢套件的是集成测试和数据库IO.
不幸的是,许多新的转换器都会编写测试,这些测试会导致任何Java开发人员在每个测试用例中使用许多断言来解读像长漫游一样的内容.
编写良好的RSpec测试套件(或规范套件)更易读,易于导航.当规范失败时,很容易将它与应用程序中实际出错的东西联系起来.当然,有许多套房恰恰相反.
Minitest非常灵活,甚至可以与spec样式语法一起使用.它非常稀疏,不包括丰富的断言库和像RSpec这样的模拟库.虽然您可以插入任何东西,但仍需要让所有可移动部件一起工作.
RSpec有一个更好的测试运行器和优秀的文档.
| 归档时间: |
|
| 查看次数: |
2453 次 |
| 最近记录: |