Ruby 从irb或pry运行单元测试
有没有办法从irb或pry会话内部运行测试文件 我尝试了Ruby 从irb或pry运行单元测试,ruby,testing,irb,pry,Ruby,Testing,Irb,Pry,有没有办法从irb或pry会话内部运行测试文件 我尝试了load./testfile.rb,但是没有运行testfile中的测试 我的测试文件如下所示: require 'test/unit' require './sudoku.rb' class SudokuTest < Test::Unit::TestCase def test_initialize assert_nothing_raised do Sudoku.new(Array.new(9*9))
load./testfile.rb
,但是没有运行testfile中的测试
我的测试文件如下所示:
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
要求“测试/单元”
需要“./sudoku.rb”
类SudokuTest
它不会运行测试,因为您没有要求它运行测试。您只是在创建类
试试这个:
tests = SudokuTest.new
tests.test_initialize
测试实际上并不意味着要像那样以交互方式运行,但是如果您查看ruby标准库并查看文件
test/unit.rb
,您将看到当您需要“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'
也许这就是你想要的。它可以在测试失败的情况下自动启动Pry会话。如果我尝试此操作,我会得到:ArgumentError:调用SudokuTest.new时参数数量错误(0代表1)
,并且我无法确定它实际想要什么作为参数。参数应该是应该测试的方法:。尝试简单地SudokuTest.new:test\u initialize
。使用SudokuTest.new:test\u initialize
创建一个SudokuTest对象,但对其调用test\u initialize
会给我NoMethodError:nil:NilClass的未定义方法“add\u断言”