2017-06-07 5 views
2

Ich versuche, Tests zu beschleunigen und bisher Dinge wie unnötige Datenbank-Schreibvorgänge (mit neuen statt erstellen und nicht mit FactoryGirl, weniger Feature-Tests, Kombination Tests) und wenn ich die Dateien einzeln ausführen, bekomme ich eine Reduktion rechtzeitig.Genaue RSPEC/Capybara Testzeit messen?

Wenn ich jedoch die gesamte Testsuite laufe, bekomme ich ungefähr die gleiche Zeit, und manchmal bekomme ich sogar eine langsamere Laufzeit bei meinen verbesserten Tests.

Jede Möglichkeit, dies genau zu messen?

+0

diese [in-Laufzeit-für-jeden-rspec-Beispiel] helfen könnten (https://stackoverflow.com/questions/4856500/show-runtime-for -jeach-rspec-Beispiel) –

Antwort

4

Austauschen statt neu erstellen mit FactoryGirl wirft das Baby mit dem Bade aus. Wenn Sie keine persistenten Objekte benötigen, können Sie FactoryGirls build oder build_stubbed verwenden und Sie erhalten die Performance-Einsparungen, während Sie immer noch die Parameter-Standardwerte usw. beibehalten. Darüber hinaus wird die gesamte Performance-Optimierung von der tatsächlichen Zeit überlagert Dinge in einem Browser zu tun, und Asset-Kompilierung (besonders bei kleineren Anzahl von Tests), so dass Sie wirklich nicht so viel sparen werden. Wenn Leistung das ist, was Ihnen am Herzen liegt, testen Sie so viel wie möglich in Komponententests und beschränken Sie dann die meisten Ihrer Funktionstests auf den glücklichen Weg durch Ihre App.

Wenn Sie immer noch die langsamsten Tests finden möchten, um sicherzustellen, dass Sie nicht auf "Nicht Elemente vorhanden" warten und nicht "Elemente nicht existieren" und sie optimieren, können Sie die --profile Befehlszeile angeben Option rspec oder geben Sie 'profile_examples' in Ihrer RSpec Konfiguration https://relishapp.com/rspec/rspec-core/docs/configuration/profile-examples