RoR – Αυτοματοποίηση των tests

Αν θέλουμε να αποφύγουμε, κάθε φορά που θέλουμε να τρέξουμε τη σουίτα των tests μας, να γυρίζουμε σε γραμμή εντολών, μπορούμε να το γλιτώσουμε με τη βοήθεια του “Guard“. Το Guard έχει την δυνατότητα όχι μόνο να τρέχει αυτόματα τα tests μας κάθε φορά που κάνουμε κάποια αλλαγή σε ένα αρχείο, αλλά και να τρέχει μόνο εκείνα τα tests που αντιστοιχούν στον αλλαγμένο κώδικά μας.

Αρχικά πρέπει να προσθέσουμε στο Gemfile το κατάλληλο gem. Θεωρώντας ότι χρησιμοποιούμε RSpec αντί Test::Unit προσθέτουμε το ‘guard-rspec’ (αλλιώς σκέτο ‘guard’) στο group ‘development’:

group :development do
  gem 'guard-rspec'
end

Σύμφωνα με το Rails Tutorial, πρέπει επίσης να προσθέσουμε κάποια ακόμα gems κάτω από το group ‘test’, ανάλογα με το λειτουργικό μας. Εφόσον χρησιμοποιούμε Rails 4 (για παλιότερες εκδόσεις είναι λίγο διαφορετικά) προσθέτουμε:

  • Σε Linux:
    group :test do
      gem 'libnotify'
    end
    
  • Σε Windows:
    group :test do
      gem 'rb-notifu'
      gem 'win32console'
      gem 'wdm'
    end
    
  • Σε OS X:
    group :test do
      gem 'growl'
    end
    

Στη συνέχεια τρέχουμε:


bundle install
bundle exec guard init rspec

Μπορούμε αν θέλουμε να τροποποιήσουμε το παραγόμενο ‘Guardfile’. Για να μην τρέχουν όλα τα tests κάθε φορά μπορούμε να προσθέσουμε (πάντα στη περίπτωση που χρησιμοποιούμε  RSpec αντί Test::Unit):

guard 'rspec', all_after_pass: false do
...
end

Εν τέλει τρέχουμε:


bundle exec guard

Έτοιμοι!