加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Unit :: Test与Rspec之间的差异

发布时间:2020-12-17 01:51:51 所属栏目:百科 来源:网络整理
导读:我对Test :: Unit和Rspec感兴趣. 有人可以解释一下两者之间的主要区别 – 就其运作的原则而言. 解决方法 Test :: Unit更像是像JUnit这样的经典TDD工具.测试是作为类编写的(因为这是在 Java / C中完成的). 对于那些习惯于经典测试工具的人来说,Test :: Unit更
我对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有一个更好的测试运行器和优秀的文档.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读