5

有没有办法从 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
4

3 回答 3

5

测试并不是真的要像那样以交互方式运行,但是如果您查看 ruby​​ 标准库并查看文件test/unit.rb,您会发现它在以下情况下设置了一个at_exit处理程序require 'test/unit'

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'
于 2012-05-20T03:29:59.263 回答
0

它不会运行测试,因为您没有要求它。您只是在创建课程。

试试这个:

tests = SudokuTest.new
tests.test_initialize
于 2012-05-19T22:42:08.980 回答
0

也许普利茅斯就是你想要的。它可以在测试失败的情况下自动启动 Pry 会话。

于 2012-05-20T03:36:40.400 回答