2010-12-07 100 views
1

J'ai un système qui dépend fortement de diverses API Web. Je voudrais exécuter mes tests spécifiques à l'API au moins une fois par jour pour m'assurer que toutes les API sont toujours bien lues et vivantes. J'ai un ensemble de tests unitaires (juste des fichiers rb simples qui testent les appels d'API pour les données attendues) et je voudrais les exécuter toutes les 24 heures. Si quelque chose se brise, je voudrais prendre une action (par exemple, par courriel ou par sms).Comment puis-je exécuter les tests Ruby automatiquement?

Comment mieux configurer les tests Ruby automatisés et analyser le résultat? Puis-je simplement configurer un travail cron pour gérer les fichiers .rb? Comment prendre une action et détecter par programme si les tests échouent? Peut-être qu'il existe une sorte de solution d'intégration continue pour RUby qui peut gérer cela?

Répondre

2

Je viens de passer par le processus de configuration Hudson CI en tant que mon serveur d'intégration, en utilisant this amazing tutorial de Dr. Nic. Il s'installe à travers une gemme, à peu près préconfigurée, et était extrêmement simple à travailler. J'utilise rspec et concombre, et Hudson exécute tous les tests quand il voit un nouveau commit sur mon dépôt git. Si tous les tests réussissent, il fusionne le code dans ma branche principale. Si un test échoue, il retient ses chevaux et m'envoie un mail.

EDIT:

Je veux aussi donner dix pouces jusqu'à le plug-in ChuckNorris pour Hudson. Agile ne va pas mieux que la programmation par paire avec Walker, Texas Ranger.

+0

La seule chose que je n'aimais pas sur l'utilisation d'Hudson pour tester le potentiel a été de vérifier dans le mauvais code. Je préfère savoir qu'il passe les tests avant que le code ne soit commis. Rien n'est plus irritant que d'avoir un bon code de base, le mettre à jour, et le regarder aller à h-e-double cure-dents. –

+2

haha, absolument raison. J'ai résolu cela en poussant mon code jusqu'à une branche "pré-master" sur github; Hudson vérifie cela, lance le test et pousse le code sur "master" si tout va bien. (Je dois aussi admettre que je suis le seul développeur en ce moment ... si triste.) –

+0

J'aime cette technique pré-maître, je n'y avais pas pensé, il résout l'ensemble commit-et toujours concurrency un travail -Problème de construction –

0

Ruby a Test::Unit intégrés, RSpec, ZenTest, shoulda, cucumber et probablement beaucoup plus d'outils pour aider à tester. En étant intégré, Test :: Unit est beaucoup utilisé et est la cible à battre par les autres outils.

ZenTest et RSpec peuvent effectuer des tests en continu: vous effectuez une modification et enregistrez un fichier et ils le verront et exécuteront la suite de tests. J'aime ça parce que je connais tout de suite l'état des choses.

Je n'ai pas utilisé de concombre, mais j'ai utilisé le reste. J'ai entendu l'accent mis par le concombre sur les tests d'intégration, mais cela aurait pu être les sentiments du commentateur plutôt que la conception des développeurs. Le list of tutorials for cucumber est une navigation intéressante. En particulier, il y a webrat: Automated Acceptance Testing with RSpec or Cucumber.

L'un de ces éléments pourrait être câblé avec cron pour fonctionner périodiquement; Traitez-les comme vous le feriez pour n'importe quel autre jeu d'applications de ligne de commande.

Il devrait être facile de lier également les tests sur le Web, mais vous devrez identifier les gemmes/modules nécessaires et écrire le code de la colle. Je n'ai pas eu besoin d'une telle bête que je l'utiliserais en utilisant Mechanize et/ou l'un des autres joyaux HTTP plus Nokogiri pour piller les pages.