2012-06-19 5 views
10

Ich habe this tutorial on speeding up rspec with spork gefolgt, und ich bin auf einer win7 x64-Box mit Ruby 1.9.2 und Schienen 3.2.5. Alles funktioniert, aber der Test wird immer noch langsam ausgeführt. Macht spork unter Windows nicht viel, weil das Betriebssystem kein Forking unterstützt?Rspec noch langsam auf Windows auch mit Spork

Gibt es noch etwas, was ich tun kann, um die Dinge zu beschleunigen?

Ich auch found this similar SO question, und beobachtete die video by Corey Haines on fast testing. Ich genoss das Video, aber ich kann mir nicht helfen zu fühlen, dass etwas aus ist, wenn der Zustand unserer Werkzeuge (langsame Tests aufgrund der Startzeit von Schienen, in diesem Fall) vorschreibt, wie wir unseren Code strukturieren. Wenn diese langsame Startzeit nicht existierte, würde es seine Methoden brauchen? Auf der anderen Seite, mit Tests, die 10-30 Sekunden dauern, gehen so viele Vorteile von TDD verloren, dass ich auch seinen Standpunkt sehe.

Falls es relevant ist, ist hier die Konsolenausgabe von Spork als die rspec ein paar Mal ausgeführt wurde:

$ bundle exec spork 
Using RSpec 
    -- Starting to fill pool... 
    Wait until at least one slave is provided before running tests... 
    ** CTRL+BREAK to stop Spork and kill all ruby slave processes ** 
Spork is ready and listening on 8989! 
    -- Rinda Ring Server listening for connections... 

    -- build slave 1... 
Preloading Rails environment 
    -- build slave 2... 
Preloading Rails environment 
Loading Spork.prefork block... 
Loading Spork.prefork block... 
Running tests with args ["--color"]... 
    --> DRb magazine_slave_service: 1 provided... 
    --> DRb magazine_slave_service: 2 provided... 
    <-- take tuple(2); slave.run... 
    -- (2);run done 
Done. 

    -- build slave 2... 
Preloading Rails environment 
Loading Spork.prefork block... 
Running tests with args ["--color"]... 
    <-- take tuple(1); slave.run... 
    -- (1);run done 
Done. 

    -- build slave 1... 
Preloading Rails environment 
Loading Spork.prefork block... 
    --> DRb magazine_slave_service: 2 provided... 
+0

Wie viele Beispiele benötigen 30 Sekunden zum Ausführen? Spork wird Ihnen nicht helfen, die Zeit Ihrer Tests zu beschleunigen. Es wird sie in einer viel kürzeren Zeit laufen lassen. – jdoe

+0

Ich habe allgemein gesprochen. In meinem Beispiel gibt es nur einen Test, der selbst in einem Bruchteil einer Sekunde ausgeführt wird, aber dauert 5-10 Sekunden, um tatsächlich zu laufen, einschließlich Schienen Ladezeit – Jonah

+2

Laufen spork auf Windows ist nutzlos, warum machst du es? Es gibt nichts, was Ihnen helfen wird, Ruby auf Windows ist langsam und die meisten Tools da draußen sind nur Linux/Mac. Wenn Sie sich dafür entscheiden, auf Windows zu gehen, müssen Sie nur die Tatsache akzeptieren, dass Ruby ziemlich voll ist. –

Antwort

1

Der Kodex Shop ist ein MRI Rubin für Windows optimiert erstellen, können Sie weitere Informationen finden auf ihre Website oder ihre Github Repo.

Ich schlage vor, Sie auch this talk über developping Schienen-Anwendungen auf Windows

0

Bevor zu sehen, ich war so geduldig wie alle anderen in laufenden RSPEC Windows-Tests mit! Rake (s) zu tun kostet zu viel Zeit und es war nicht mehr wirklich gesund. Deliverables wurden irgendwie verzögert, weil die Entwicklung in Windows so ein Schmerz war. Und das ist die Wahrheit. Deshalb bin ich zu Linux gewechselt. Aber manchmal gab es immer noch Schwierigkeiten bei der Verwendung von Linux (mühsame Installation von einigen Sachen und mehr). Ich blieb einfach geduldig, bis ich zu MAC wechselte, was viel besser ist.

Wenn Sie wirklich konsequent in der Verwendung von Windows für ROR sind, dann wäre das Ausführen von Tests so langsam, wenn es viele Module zum Testen gibt.

Ich bin auch sicher, dass Selen-Tests in Windows ein Desaster sein würden.

Aber Sie können auch versuchen, einige andere Sachen wie die Verwendung von GUARD (für eine schnellere Ausführung von Testskripten) hinzuzufügen, wobei Sie nicht wiederholt rspec spec eingeben müssen.

See: https://github.com/guard/guard

Für die Spork, auch ich begegnet auch einen Fehler über sie (vor) ... wobei ich einige spec-Dateien unter Linux bin Tests und es war dann so langsam, dass ich mit wirklich gehasst es.

Und das ist die Realität.

Check out, wie ich SPORK konfiguriert für rspec arbeiten:

spec_helper.rb

See: https://github.com/xirukitepe/animelist/blob/master/spec/spec_helper.rb

0

ich eine Linux-VM für diese Art der Sache verwenden würde ...

Die größte Steigerung der Testgeschwindigkeit, die ich mit RSpec erreicht habe, bestand darin, sicherzustellen, dass sie niemals die Datenbank trifft, es sei denn, sie muss es unbedingt tun.

Verwandte Themen