2012-05-19 30 views
5

Có cách nào để chạy một tệp thử nghiệm từ bên trong một phiên tăng cường hay không?chạy thử nghiệm Đơn vị từ irb hoặc pry

Tôi đã thử load './testfile.rb, nhưng điều đó không chạy thử nghiệm trong tệp thử nghiệm.

My Testfile trông như thế này:

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 

Trả lời

4

Các xét nghiệm không thực sự có nghĩa là để được chạy một cách tương tác như thế, nhưng nếu bạn nhìn vào các thư viện chuẩn ruby ​​và nhìn vào các tập tin test/unit.rb bạn sẽ thấy rằng nó đặt một handler at_exit khi bạn require 'test/unit':

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

Vì vậy, xem xét tất cả điều này, bạn cần phải làm gì trong phiên irb của bạn là gọi:

Test::Unit::AutoRunner.run 

Điều này sẽ chạy tất cả các thử nghiệm bạn đã tải được phân loại từ Test::Unit::TestCase.

Nếu bạn chỉ muốn chạy các tập tin kiểm tra, mà không cần nạp nó vào trong phiên irb, bạn chỉ có thể làm:

system 'ruby testfile.rb' 
0

Nó không chạy thử nghiệm bởi vì bạn không yêu cầu nó cho. Bạn chỉ cần tạo lớp học.

Hãy thử điều này:

tests = SudokuTest.new 
tests.test_initialize 
+0

Nếu tôi thử điều này, tôi nhận được: 'ArgumentError: sai số đối số (0 cho 1)' khi gọi SudokuTest.new và tôi không thể tìm ra cái mà nó thực sự muốn làm đối số. – FlyingFoX

+0

Đối số phải là phương pháp cần được kiểm tra: http://test-unit.rubyforge.org/test-unit/Test/Unit/TestCase.html#method-c-new. Hãy thử đơn giản 'SudokuTest.new: test_initialize'. –

+0

Sử dụng 'SudokuTest.new: test_initialize' tạo đối tượng SudokuTest, nhưng gọi' test_initialize' trên nó mang lại cho tôi 'NoMethodError: phương thức undefined 'add_assertion' cho nil: NilClass' – FlyingFoX

0

lẽ plymouth là những gì bạn muốn. Nó có thể bắt đầu một phiên Pry tự động trong bối cảnh của một thử nghiệm thất bại.

Các vấn đề liên quan