Unit::Test 与 Rspec 之间的区别 [关闭]

2024-05-02

我对感兴趣Test::Unit and Rspec.

有人可以向我解释一下两者之间的主要区别是什么 - 就它们的运作原理而言。


测试::单位更类似于 JUnit 等经典 TDD 工具。测试被编写为类(因为这就是在 Java / C++ 中完成的方式)。

对于那些习惯了经典测试工具的人来说,Test::Unit 更容易上手。

Test::Unit已完全被取代Minitest https://github.com/seattlerb/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 在这方面做得有点过分,并对核心 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。

编写良好的 RSpec 测试套件(或规范套件)更具可读性且易于导航。当规范失败时,很容易将其与应用程序中实际出现的问题联系起来。当然,还有很多套房是完全相反的。

Minitest 非常灵活,甚至可以与规范样式语法一起使用。它开箱即用的非常稀疏,并且不包含丰富的断言库和像 RSpec 这样的模拟库。虽然您可以插入任何东西,但您仍然需要让所有移动部件协同工作。

RSpec 拥有更好的测试运行器和优秀的文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unit::Test 与 Rspec 之间的区别 [关闭] 的相关文章

随机推荐