2010-10-01 3 views
6

Es gibt eine ganze Reihe von Optionen für Full-Stack-Tests von Rails-Anwendungen. Manche benutzen echte Browser, andere sind kopflos, manche laufen gar nicht mit Javascript.Optionen für den vollständigen Stapeltest in Ruby on Rails

Welche Tools verwenden oder empfehlen Sie und warum?

Liste der Browser Simulatoren oder Automatisierer:

  • Rails integrierte Unterstützung für die Integration und Funktionstests (kein JS)
  • webrat
  • webrat :: Selen
  • Selen
  • Celerity (durch Culerity)
  • Watir
  • ...

Liste der DSLs Prüfung und Frameworks:

  • Rails Vorgaben (Behauptungen, ...)
  • Shoulda
  • Gurke
  • Capybara (einheitliche DSL für mehrere Browser-Simulatoren)
  • ...
+0

Bummer ... alle guten Antworten, aber welche ist die beste? –

Antwort

1

Ich habe während meiner Karriere in den letzten Jahren eine Menge Dinge benutzt.

Momentan arbeiten wir an einer ziemlich großen Rails-App auf JRuby mit sehr solider Testabdeckung und unser Stack sieht wie folgt aus.

Unit Testing:

  • RSpec Abdeckung von Modellen, Helfer, Bibliotheken und Controllern. Controller Abdeckung neigt dazu, sehr hohe Niveau zu sein
  • JSpec Abdeckung für ein Projekt, das einige ziemlich Schnitte JS und HTML wird unter Verwendung von 5 wizardry

Functional Testing:

  • Gurke mit Capybara und Culerity (wir gerade von webrat umgewandelt, um zu Abdeckung von JS-schwere-Frontends von Gurke)
  • Selen zu erhalten, die jetzt „Legacy“ ist und Gurke/capybara langsam migrierenden
1

In dem Projekt, an dem ich gerade arbeite, benutzen wir zum Testen des vollen Stacks Gurke mit Capybara als Treiber.

Das Frontend ist sehr Javascript schwer, habe ich ein paar kopflose Browser-Treiber (Capybara-envjs und Akephalos) versucht, aber beide fälschlicherweise fehlgeschlagen Tests, die in einem echten Browser übergeben.

1

Ich benutze Cucumber + Capybara mit einer Kombination aus Selen-Webdriver und dem Rack-Test-Treiber. Capybara macht eine gute Arbeit der Abstraktion der Unterschied zwischen In-Browser-Tests, die von Selen-Webdriver für Test angetrieben werden, die tatsächlich testen können, dass das JavaScript in einem Browser funktioniert, aber eine Weile dauern, um zu testen, dass nur gegen das HTML von ausgeführt wird die Controller/Action, die viel schneller laufen, aber JavaScript nicht testen. Dies bedeutet, dass dieselbe Gruppe von Szenarios und Schrittdefinitionen in einem Browser ausgeführt werden kann oder nicht, ohne doppelte Sätze von Schrittdefinitionen verwalten zu müssen.

2

Alle Rails-Anwendungen profitieren von einer guten Abdeckung von Unit- und Funktionstests, egal ob Sie rspec oder sophia etc. verwenden, ist meistens eine Frage der persönlichen Präferenz. Ich bin ein Fan von shoulda meist für die Context-Blöcke, die es bietet, wodurch die Einrichtung von Testszenarien viel einfacher und klarer zu verstehen.

Ich glaube nicht, Browser Simulatoren/Automatoren sind erforderlich, es sei denn, Ihre Anwendung ist ziemlich Javascript schwer. Ich würde empfehlen, sie nur zu benutzen, um Javascript zu testen, und zu diesem Zweck ist es definitiv besser, mit einem echten Browser zu fahren als zu simulieren. Die App, an der ich gerade arbeite, ist ziemlich Javascript schwer und wir verwenden cucumber zusammen mit watir/firewatir, um unsere Gurkentests in Firefox für die javascript-gesteuerten Funktionen auf unserer Website auszuführen.