2012-04-12 4 views
4

Wir haben eine Reihe von Selenium-Tests. Ich möchte SimpleCov verwenden, um die serverseitige Abdeckung dieser Tests abzudecken. Zunächst einmal, ist das ein gemeinsamer Ansatz? Ich konnte nichts auf SimpleCov/Selen finden. Vielleicht wird SimpleCov normalerweise für Unit-/Funktionstests anstelle von Integration verwendet?SimpleCov mit Selenium/Rails

Das aktuelle Selenium-Setup erfordert das Starten eines Rails-Servers, da dann eine Reihe von Selenium-Tests darauf treffen. Ich würde SimpleCov benötigen, um auf dem Rails-Server zu laufen, und dann beenden, nachdem die Suite fertig ist.

Jede Hilfe sehr geschätzt!

Antwort

4

simplecov Autor hier. Wenn Sie SimpleCov starten, wendet es die Coverage-Analyse auf den aktuell ausgeführten Prozess an. Daher müssten Sie SimpleCov in Ihrem Rails-Server-Prozess starten. Ich würde empfehlen, die SimpleCov Setup als Bedingung zu Ihrer Rails app config/boot.rb Hinzufügen (an der Spitze), etwa so:

# config/boot.rb 
if ENV["SELENIUM"] 
    require 'simplecov' 
    SimpleCov.start 'rails' 
end 

Bevor Sie Rails Testserver zu booten, stellen Sie diese Umgebungsvariable. Sie sollten nun einen Abdeckungsbericht erhalten, sobald der Testserver heruntergefahren ist. Bitte überprüfen Sie die Konfigurationsoptionen, wenn Sie sie in ein anderes Verzeichnis verschieben möchten, damit sie Ihren regulären (Einheit/Funktions-) Abdeckungsbericht nicht beeinträchtigt.

Ich bin mir nicht sicher, ob boot.rb der richtige Ort ist. Fakt ist, dass SimpleCov geladen werden muss, bevor irgendetwas anderes in Ihrer App erforderlich ist, oder dass die Abdeckung für diese Dateien nicht erfasst werden kann. Möglicherweise müssen Sie experimentieren oder in den Rails-Boot-Prozess schauen, um diesen Ort zu finden, aber da das Bundler-Setup Teil von boot.rb ist (wenn ich mich richtig erinnere ...), sollte die erwähnte Konfiguration über Bundler.setup gesetzt werden gut.

Grundsätzlich können Sie mit einem ähnlichen Setup sogar Codeabdeckung für Ihre lokalen manuellen browserbasierten Tests erhalten, indem Sie simplecov in Ihrem Serverprozess starten, den Server anklicken und verlassen, wenn Sie zum Beispiel wissen möchten, welcher Teil Ihres Anwendung berührt eine bestimmte Aktion wirklich.

+1

Danke! Großer Fan von SimpleCov :) – phillee