2012-11-08 24 views
5

Tôi đang cố gắng thiết lập bộ thử nghiệm trong Ruby để tự động hóa Kiểm tra của WebUI (sử dụng Watir)Thiết lập bộ thử nghiệm trong Ruby

Các thử nghiệm riêng lẻ vẫn ổn và tất cả đều chạy đúng, nhưng tôi đang gặp sự cố bộ.

Ví dụ, nếu một trong các bài kiểm tra của tôi là (nơi BaseTestClass mở rộng Test :: Đơn vị :: TestCase)

class Test3_1_3_1_2 < BaseTestClass 
    def testHeightOfMainPanel 
    assert(false, 'Not implemented') 
    end 
end 

Trong kịch bản RunAllTests của tôi, tôi đang cố gắng để làm như sau

require 'test/unit' 

Test::Unit.at_start do 
    #Lets create our own user for these tests 
    createCCUser(User, Password) 
end 

Test::Unit.at_exit do 
    #Delete our own user 
    deleteUser(User) 
end 


Dir["./**/Test*.rb"].each{|s| 
    puts s.to_s 
    load s 
} 

Vì vậy, về cơ bản những gì tôi muốn làm là tạo một người dùng mới khi bắt đầu kiểm tra, chạy thử nghiệm và sau đó xóa người dùng. Điều này là cần thiết bởi vì hệ thống là một dấu hiệu đơn (kinda) và nếu chúng ta sử dụng cùng một người dùng cho mọi người, không có gì đảm bảo rằng các thử nghiệm sẽ thực thi đúng cách (tức là người khác có thể chạy thử nghiệm cùng một lúc và sau đó người sử dụng sẽ bị đuổi ra khỏi)

Các lỗi tôi nhận được là: phương pháp xác định at_start' and private method at_exit' gọi

tôi biết tôi đang làm gì đó sai, nhưng là rất mới để ruby ​​thật khó để xem nơi. Về cơ bản những gì tôi cần là một cách để thực hiện một số thiết lập chạy tất cả các bài kiểm tra có thể được tìm thấy, và sau đó làm một dọn dẹp. Mỗi bài kiểm tra đã thiết lập và teardown riêng biệt của riêng mình phương pháp

Tôi cũng nên thêm, tôi đã thử nhiều biến thể của cùng một ở trên, ví dụ như

require 'test/unit' 

class Temp < Test::Unit::TestCase 
    Test::Unit.at_exit do 
    #Delete our own user 
    deleteUser(User) 
    end 


    Test::Unit.at_start do 
    #Lets create our own user for these tests 
    createCCUser(User, Password) 
    end 

    Dir["./**/Test*.rb"].each { |s| 
    puts s.to_s 
    load s 
    } 
end 

Và tôi vẫn không nhận được nó. Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao

+0

Phiên bản nào của Ruby và test/unit bạn đang sử dụng? –

Trả lời

5

Tôi nghĩ rằng vấn đề là, giả sử bạn đang sử dụng Ruby 1.9.3, là sự nhầm lẫn về đá quý nào được yêu cầu bởi require 'test/unit'.

Trong Ruby 1.9.3, require 'test/unit' sẽ yêu cầu đá quý "Nhỏ nhất". Các phương pháp bạn muốn sử dụng không tồn tại trong đá quý này.

Các phương pháp at_startat_exit tồn tại trong đá quý test-unit.

Giả sử bạn có cả đá quý Minitest (được cài đặt theo mặc định trong Ruby 1.9) và Đá quý kiểm tra (cài đặt thủ công bằng gem install test-unit), bạn cần nêu rõ bạn muốn đá quý đơn vị thử nghiệm.

Trước khi đòi hỏi test/unit, xác định việc sử dụng các bài kiểm tra đơn vị đá quý:

gem 'test-unit' 
require 'test/unit' 
+0

Cảm ơn Justin, đã trả lời câu hỏi một cách hoàn hảo. Trong tất cả những điều tôi đọc tôi chưa bao giờ thấy bất cứ điều gì về đá quý được chỉ định, và bạn đã chính xác nó là sự nhầm lẫn xung quanh đá quý nào đang được yêu cầu. cảm ơn rất nhiều vì sự giúp đỡ của bạn – Dace