Ich bin mir nicht sicher, ob ich verstehe, was Ihre Frage in Bezug auf die Berichterstattung bedeutet, aber das Selen-Client-Juwel behandelt sowohl BDD als auch UnitTesting.
Im Folgenden finden Sie Code aus der RubyForge Seite kopiert:
require "test/unit"
require "rubygems"
gem "selenium-client", ">=1.2.16"
require "selenium/client"
class ExampleTest < Test::Unit::TestCase
attr_reader :browser
def setup
@browser = Selenium::Client::Driver.new \
:host => "localhost",
:port => 4444,
:browser => "*firefox",
:url => "http://www.google.com",
:timeout_in_second => 60
browser.start_new_browser_session
end
def teardown
browser.close_current_browser_session
end
def test_page_search
browser.open "/"
assert_equal "Google", browser.title
browser.type "q", "Selenium seleniumhq"
browser.click "btnG", :wait_for => :page
assert_equal "Selenium seleniumhq - Google Search", browser.title
assert_equal "Selenium seleniumhq", browser.field("q")
assert browser.text?("seleniumhq.org")
assert browser.element?("link=Cached")
end
end
Wie für die Ausnahmebehandlung, Unittesting behandelt die Ausnahmen mit einer Fehlermeldung.
Davon abgesehen, habe ich Ihre Frage vielleicht missverstanden.
Nun, wie für die Berichterstattung, ich Selen-like-Bericht will (siehe hier: http://labs.fusionlink.com/katapult/images/Image/cfeclipse/pic21.jpg) Aber wenn das mit Selen-Client-Gem nicht möglich ist, möchte ich meine eigenen erstellen, und ich möchte es auch mit einigen Dingen erweitern (Screenshots von Seiten, die zum Beispiel Fehler enthalten). Um das zu tun, muss ich Ausnahmen abfangen. Ich kann das mit "rettung" tun, aber das würde bedeuten, dass jeder meiner Tests eine rettungsende-Anweisung haben sollte, und das ist ärgerlich. Gibt es einen anderen Weg, das zu tun? – zorglub76
Könnte sein, dass Sie die begin..rescue mit einer Rendite abstrahieren könnten? Auf diese Weise würden Sie nur einen abstrahierten Ausnahmeblock benötigen. –