Ich teste eine Ruby Rails-Website und wollte mit Unit- und Funktionstests beginnen.
Antworten
Zu viele Anzeigen?Gurke y RSpec sind einen Blick wert. Sie fördern das Testen in einem verhaltensorientiert , beispielhafter Stil.
RSpec ist eine Bibliothek für Tests auf Unit-Ebene:
describe "hello_world"
it "should say hello to the world" do
# RSpec comes with its own mock-object framework built in,
# though it lets you use others if you prefer
world = mock("World", :population => 6e9)
world.should_receive(:hello)
hello_world(world)
end
end
Es bietet spezielle Unterstützung für Rails (z.B. kann es Modelle, Views und Controller isoliert testen) und kann die in Rails eingebauten Testmechanismen ersetzen.
Mit Cucumber (früher bekannt als RSpec Story Runner) können Sie High-Level-Akzeptanztests in (relativ) einfachem Englisch schreiben, die Sie einem Kunden zeigen (und mit ihm abstimmen) können, und sie dann ausführen:
Story: Commenting on articles
As a visitor to the blog
I want to post comments on articles
So that I can have my 15 minutes of fame
Scenario: Post a new comment
Given I am viewing an article
When I add a comment "Me too!"
And I fill in the CAPTCHA correctly
Then I should see a comment "Me too!"
Meine Empfehlung ist (ernsthaft) nur Bypass der eingebauten Schienen Einheit / funktionale Prüfung Zeug, und gehen Sie direkt für RSpec .
Die eingebauten Schienen verwenden die Test::Unit
Framework, das mit Ruby ausgeliefert wird, und das mehr oder weniger eine direkte Portierung von JUnit/NUnit/AnyOtherUnit ist.
Ich fand diese Frameworks alle ziemlich mühsam und ärgerlich, was zu einer allgemeinen Apathie über das Schreiben von Unit-Tests, die offensichtlich nicht das ist, was Sie versuchen, hier zu erreichen.
RSpec ist ein anderes Tier, das sich darauf konzentriert, zu beschreiben, was Ihr Code sollte tun, anstatt zu behaupten, was sie tut bereits . Es wird Ihre Sichtweise auf das Testen verändern, und Sie werden viel mehr Spaß dabei haben.
Wenn ich mich wie ein Fanboy anhöre, dann nur, weil ich wirklich glaube, dass RSpec so gut ist. Ich ging von genervt und müde von Einheit / Funktionstests, zu einem überzeugten Gläubigen in es, so ziemlich nur wegen rspec.
Es hört sich so an, als hätten Sie Ihre Bewerbung bereits geschrieben, daher bin ich mir nicht sicher, ob Sie einen großen Vorteil davon haben, wenn Sie RSpec
über Test::Unit
.
Unabhängig davon, wofür Sie sich entscheiden, werden Sie schnell auf ein anderes Problem stoßen: die Verwaltung von Fixtures und Mocks (d. h. Ihrer Test-"Daten"). Werfen Sie also einen Blick auf Sollte y Fabrikmädchen .
Sie können die Weboberfläche auch mit einem Firefox-Plugin testen, z. B. http://selenium.openqa.org/
Es zeichnet Klicks und Texteingaben auf, gibt sie wieder und prüft die Seite auf die richtigen Anzeigeelemente.
Selbst wenn die Anwendung bereits geschrieben ist, würde ich die Verwendung von RSpec gegenüber Test::Unit aus dem einfachen Grund empfehlen, dass keine Anwendung jemals fertig ist. Sie werden immer wieder neue Funktionen hinzufügen und den Code umgestalten wollen. Die richtige Testgewohnheit zu einem frühen Zeitpunkt wird dazu beitragen, dass diese Änderungen weniger schmerzhaft sind