从irb或pry运行单元测试

时间:2012-05-19 22:39:08

标签: ruby testing irb pry

有没有办法从irb或pry会话中运行测试文件?

我尝试了load './testfile.rb,但是没有在测试文件中运行测试。

我的测试文件如下所示:

require 'test/unit'
require './sudoku.rb'

class SudokuTest < Test::Unit::TestCase
  def test_initialize
    assert_nothing_raised do
      Sudoku.new(Array.new(9*9))
    end
    assert_nothing_raised do
      Sudoku.new(Array.new(9*9,Field.new(nil)))
    end
  end
end

3 个答案:

答案 0 :(得分:4)

测试并不是真的要以交互方式运行,但是如果你查看ruby标准库并查看文件test/unit.rb,你会看到at_exit处理程序require 'test/unit' {1}}:

at_exit do
  unless $! || Test::Unit.run?
    Kernel.exit Test::Unit::AutoRunner.run
  end
end

所以,在irb会话中您需要做的就是调用:

Test::Unit::AutoRunner.run

这将运行已加载的所有已从Test::Unit::TestCase创建子类的测试。

如果您只想运行测试文件,而不将其加载到irb会话中,您可以执行以下操作:

system 'ruby testfile.rb'

答案 1 :(得分:0)

它没有运行测试,因为你没有要求它。你只是创建类。

试试这个:

tests = SudokuTest.new
tests.test_initialize

答案 2 :(得分:0)

也许plymouth就是你想要的。它可以在失败的测试环境中自动启动Pry会话。