Ruby:
编写测试

如何做:

Ruby 自带一个叫做 Test::Unit 的内置库,用于编写单元测试,将测试实践封装在简单的结构中。然而,Ruby 社区经常倾向于使用第三方库,如 RSpec 和 Minitest,因为它们提供了增强的表达性和灵活性。

使用 Test::Unit:

require 'test/unit'

class CalculatorTest < Test::Unit::TestCase
  def test_addition
    result = 2 + 2
    assert_equal 4, result
  end
end

从终端运行你的测试文件,你应该会得到一个标示测试成功或失败的输出:

Loaded suite test_calculator
Started
.
Finished in 0.001288 seconds.
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

使用 RSpec:

RSpec 是一个流行的 Ruby 行为驱动开发 (BDD) 框架。用 gem install rspec 安装这个gem,然后在你的项目中用 rspec --init 来初始化它。

# calculator_spec.rb
require_relative '../calculator'

describe Calculator do
  it 'correctly adds two numbers' do
    expect(Calculator.add(2, 2)).to eq(4)
  end
end

rspec 命令运行测试。示例输出:

.

Finished in 0.002 seconds (files took 0.1 seconds to load)
1 example, 0 failures

使用 Minitest:

Minitest 提供了一套完整的测试设施,支持 TDD、BDD、模拟和基准测试。用 gem install minitest 安装它,并按如下方式使用:

# test_calculator.rb
require 'minitest/autorun'
require_relative '../calculator'

class CalculatorTest < Minitest::Test
  def test_addition
    assert_equal 4, Calculator.add(2, 2)
  end
end

直接运行你的测试文件,或通过为 minitest 设置的 rake 任务运行。示例输出:

Run options: --seed 33407

# Running:

.

Finished in 0.001027s, 974.5922 runs/s, 974.5922 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

通过在你的 Ruby 项目中使用这些库来实现测试,你坚持最佳实践,从而导致更可靠和更易维护的代码基础。