在 Ruby 学习路径上测试

学习如何在 Exercism 上测试你的 Ruby 练习


运行测试

用下面的命令运行测试:

$ ruby hamming_test.rb

只有第一个测试会被执行,其余的都已经被 skip 方法设为待定。每让一个测试通过后,就删掉或注释掉下一个 skip。

理解跳过

skip 方法会让测试套件不运行某个测试。它通常用来避免运行尚未实现的功能所对应的测试,这样你就能专注于当前正在处理的部分。

测试运行摘要会列出被跳过的测试数量。在完成一个练习之前,你应该禁用所有的跳过。

自定义测试报告

如果你想要彩色输出,用下面的命令运行测试:

$ ruby hamming_test.rb -p

如果你想看到测试名称,用下面的命令运行测试:

$ ruby hamming_tests.rb -v

如果你只想运行一个测试,可以用正则表达式风格的匹配来指定一个或一组测试。

$ ruby hamming_tests.rb -n /empty/

你也可以把这些选项组合起来使用。

禁用所有跳过

既然你现在有了挑选要运行的单个或一组测试的本事,你也许就会想禁用所有的跳过。

快速但粗糙的做法

利用 Ruby 中方法可以被重写这一特性,如果你加上这行代码:

def skip ; end

像这样放进 Hamming 测试文件里:

class HammingTest < Minitest::Test
  def skip ; end
  def test_identical_strands

那么所有跳过都仍会照常求值,但会让你的测试照常运行。

同样快速但更整洁的做法

当然,每次都要改所有文件会很烦人,所以你可以像我们开发这些练习时那样做:建一个包含 skip 定义的文件,需要时用 require 把它作为库引入。

我们建了一个 lib 文件夹来存放这些“辅助”内容,它长这样:

require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
#     ruby -I../lib -rdisable_skip <filename_test.rb>

module Minitest
  class Test
    def skip(_msg='', _bt=caller)
    end
  end
end

关于如何使用它的说明就写在那个文件清单的注释里,而这份文件清单是完整的。