Ist es normal, dass meine Testsuite nur 5 Sekunden benötigt, um sie zu starten? Selbst wenn eine leere Suite läuft, dauert es noch so lange. Liegt es daran, dass bei jedem Lauf eine neue Instanz von Schienen ausgelöst wird? Wenn ja, gibt es das irgendwie, um es persistent zu halten?
Beispiel:
%Vor%Wie Sie sehen können, ist dieser leere Test sehr schnell, aber aus irgendeinem Grund gibt es immer noch 4 Sekunden Overhead. Ich verwende Test :: Unit mit Shoulda.
Testgeschwindigkeits-Engpass ist die Zeit, die Rails benötigt, um seine Umgebung zu laden. Führen Sie Skript / Konsole aus und sehen Sie, wie lange es dauert, Sie in Ihre Umgebung zu laden ... es sollte dasselbe sein.
Man hat eine ausreichend große Codebase mit vielen Plugins & amp; Edelsteine, Ladezeit kann so hoch wie 1 Minute sein !! Wenn Sie wie ich sind & amp; Stoppen Sie die Tests b / c Sie haben es satt, 30 Sekunden zu warten, nur um eine kleine Änderung zu testen, müssen Sie einen Testserver wie spec_server ausführen, oder noch besser: spork!
Sie werden feststellen, dass es seltsame Probleme beim Klassencaching mit spec_server geben kann, weshalb ich Spork bevorzuge.
Ich hatte das gleiche Problem und habe es gelöst, indem ich die Ruby Entreprise Edition (REE) installiert habe. Ich weiß nicht warum, aber das Laden der Rails Umgebung dauerte 4-5 Sekunden unter meinem Rubin 1.9.2, vs 1-2 Sekunden mit REE.
Ich habe es mit RVM installiert.
Wie lange läuft Ihr Test? Normalerweise dauern Rails-Tests aufgrund des Datenbankzugriffs lange. Um sie als erste Verbesserung zu beschleunigen, könntest du:
Beenden Sie die Verwendung instanziierter Fixtures, indem Sie Folgendes einstellen:
self.use_instantiated_fixtures = false
Verwenden Sie transaktionale Fixtures, indem Sie Folgendes setzen:
self.use_transactional_fixtures = true
Um die Testleistung noch weiter zu verbessern, sollten Sie vorinstallierte Fixtures verwenden.
Tags und Links unit-testing ruby-on-rails