Tôi đang có một thử nghiệm treo trong ứng dụng đường ray của chúng tôi không thể tìm ra cái nào (vì nó bị treo và không nhận được báo cáo thất bại). Tôi tìm thấy bài đăng trên blog này http://bmorearty.wordpress.com/2008/06/18/find-tests-more-easily-in-your-testlog/ thêm một móc cài đặt để in tên thử nhưng khi tôi cố gắng làm điều tương tự, nó cho tôi lỗi khi nói sai số đối số để thiết lập (1 cho 0). Bất kì sự giúp đỡ nào cũng được hoan nghênh.Kiểm tra đường ray treo - làm thế nào tôi có thể in tên thử nghiệm trước khi thực hiện?
Trả lời
Nếu bạn chạy thử nghiệm sử dụng cào nó sẽ làm việc:
rake test:units TESTOPTS="-v"
Bạn đang sử dụng khung kiểm tra nào? Kiểm tra/Đơn vị?
Tôi sẽ xem xét RSpec sẽ cung cấp thêm một chút ngữ cảnh cho các thử nghiệm của bạn. Bạn cũng có thể nhận được một báo cáo HTML đẹp trông như thế này:
RSpec Result http://myskitch.com/robbyrussell/rspec_results-20070801-233809.jpg
Đã bạn có bất kỳ thử nghiệm thất bại, các thử nghiệm cụ thể sẽ là màu đỏ và nó sẽ mở rộng tới các dòng cụ thể nơi thử nghiệm thất bại trong việc cung cấp cho bạn nhiều khả năng hiển thị hơn về lý do tại sao thử nghiệm không thành công và nơi bạn nên xem xét để giải quyết vấn đề.
Định nghĩa trong bài đăng blog là cụ thể (phương pháp thiết lập (& khối) được định nghĩa trong mô-đun Thoughtbot :: Shoulda trong ngữ cảnh.rb. Shoulda.rb sau đó có TestCase mở rộng mô-đun đó).
Định nghĩa cho kiểm tra tinh khiết :: đơn vị là
# File test/unit/testcase.rb, line 100
def setup
end
những gì bạn có thể làm là
def setup
log_test
end
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
chỉnh sửa
nếu bạn thực sự không muốn chỉnh sửa của bạn các tệp bạn có thể gặp rủi ro khi mở lại trường hợp thử nghiệm và mở rộng chạy thay thế:
class Test::Unit::TestCase
alias :old_run :run
def run
log_test
old_run
end
end
này nên làm việc (tôi không có ruby xung quanh để kiểm tra mặc dù)
tôi bỏ cuộc! (trong thất vọng)
Tôi đã kiểm tra mã và đường ray thực sự làm ảo thuật đằng sau cảnh có thể là lý do tại sao việc xác định lại lần chạy không hoạt động.
Điều này là: một phần của ma thuật bao gồm ActiveSupport :: CallBack và tạo cuộc gọi lại để thiết lập và rách.
có nghĩa
class Test::Unit::TestCase
setup :log_test
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
end
end
chắc chắn nên làm việc
và thực sự chạy thử nghiệm với nó làm việc. nơi tôi bối rối là đây là điều đầu tiên tôi thử và thất bại với cùng một lỗi mà bạn nhận được
một đồng xu cho công sức. – nurettin
Việc in tên thử nghiệm là trách nhiệm của TestRunner. Nếu bạn đang chạy thử nghiệm của bạn từ dòng lệnh, bạn có thể chỉ định tùy chọn -v, để in ra tên trường hợp thử nghiệm.
dụ:
ruby test_Foo.rb -v
Loaded suite test_Foo
Started
test_blah(TestFoo): .
test_blee(TestFoo): .
Finished in 0.007 seconds.
2 tests, 15 assertions, 0 failures, 0 errors
Đây là những gì tôi sử dụng, trong test_helper.rb
class Test::Unit::TestCase
# ...
def setup_with_naming
unless @@named[self.class.name]
puts "\n#{self.class.name} "
@@named[self.class.name] = true
end
setup_without_naming
end
alias_method_chain :setup, :naming unless defined? @@aliased
@@aliased = true
end
Các @@ biến aliased giữ nó khỏi bị tái aliased khi bạn chạy nó trên nhiều file cùng Một lần; @@ được đặt tên giữ tên hiển thị trước mỗi lần kiểm tra (ngay trước lần chạy đầu tiên).
Cảm ơn tất cả mọi người đã giúp đỡ, tôi đã kết thúc trải qua các cuộc thử nghiệm và thêm một cuộc gọi đến log_name trong mỗi phương pháp thiết lập cho mỗi tập tin thử nghiệm trước khi những cặp đôi câu trả lời cuối cùng đã đưa ra. Cảm ơn một lần nữa.
- 1. Làm thế nào để chạy một thử nghiệm đơn lẻ từ bộ kiểm tra đường ray?
- 2. Làm thế nào để chạy "gói" trước khi thử nghiệm "
- 3. Làm thế nào để kiểm tra đường ray ETag caching?
- 4. Chạy thử nghiệm đường ray mà không làm mất cơ sở dữ liệu thử nghiệm
- 5. Làm cách nào để có thể truy xuất tên thử nghiệm hiện tại trong thử nghiệm Mocha?
- 6. Đường ray: Thử nghiệm sản xuất
- 7. Thực hiện lệnh in cmake trước khi thực hiện
- 8. Thực thi các thử nghiệm chạy trước khi TFS kiểm tra trong
- 9. Postgis - Làm thế nào để tôi kiểm tra kiểu hình học trước khi tôi chèn
- 10. Làm thế nào tôi có thể kiểm tra DBNull trong khi thực hiện lệnh của tôi chỉ một lần?
- 11. Máy chủ yêu cầu kiểm tra đường ray thử nghiệm mặc định
- 12. Làm cách nào để kiểm tra ActiveRecord :: RecordNotFound trong ứng dụng đường ray của tôi?
- 13. Trong Boost.Test, làm thế nào để có được tên của thử nghiệm hiện tại?
- 14. Thử nghiệm thực hiện printf
- 15. Làm thế nào để bạn thực sự thấy đầu ra html trong khi kiểm tra chức năng trong đường ray
- 16. Kiểm tra đường ray không thể tìm thấy test_helper
- 17. Thực hiện kiểm tra trước khi khởi tạo danh sách
- 18. Thực hiện `kiểm tra` hoặc 'thực hiện kiểm tra'
- 19. Đường ray: Cách kiểm tra tên miền phụ bằng RSpec
- 20. Làm thế nào tôi có thể chạy Sinatra bên trong ứng dụng đường ray hiện có?
- 21. Kiểm tra spam trong đường ray
- 22. Làm thế nào để không xây dựng trước khi thực hiện kiểm tra đơn vị trong Visual Studio 2010
- 23. Làm thế nào tôi có thể kiểm tra nếu một đối tượng là null trong ruby trên đường ray 2?
- 24. Đường ray: Làm cách nào để viết các thử nghiệm cho mô-đun ruby?
- 25. Làm thế nào tôi có thể dừng máy khách thử nghiệm WCF mở khi tôi bắt đầu gỡ lỗi?
- 26. Làm thế nào để thực hiện ipdb.set_trace() theo ý muốn trong khi chạy thử nghiệm pytest
- 27. Làm thế nào để ngăn chặn một bộ điều khiển đường ray thực hiện?
- 28. Tôi có thể kiểm tra đơn vị Mã khung thực thể đầu tiên như thế nào?
- 29. Làm thế nào để gọi ipdb khi kiểm tra thất bại trong thử nghiệm django?
- 30. Đường ray và Selenium: cách dừng/tạm dừng thực hiện kiểm tra trong trình duyệt?
Xét nghiệm này được treo, không thất bại, vì vậy câu trả lời này là không thích hợp. –