ruby-on-rails – Unit :: Test与Rspec之间的差异
我对Test :: Unit和Rspec感兴趣.
有人可以解释一下两者之间的主要区别 – 就其运作的原则而言. 解决方法
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 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 哪个更好? 这是一个意见问题. Minitest最近有一点复苏,因为它被认为更快更简单.然而,测试可能非常简洁,真正减慢套件的是集成测试和数据库IO. 不幸的是,许多新的转换器都会编写测试,这会导致任何Java开发人员在每个测试用例中使用许多断言来扼杀which read like long ramblings. 编写良好的RSpec测试套件(或规范套件)更易读,易于导航.当规范失败时,很容易将它与应用程序中实际出错的东西联系起来.当然,有许多套房恰恰相反. Minitest非常灵活,甚至可以与spec样式语法一起使用.它非常稀疏,不包括丰富的断言库和像RSpec这样的模拟库.虽然您可以插入任何东西,但仍需要让所有可移动部件一起工作. RSpec有一个更好的测试运行器和优秀的文档. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |