13 votes

Comment faire pour que le minitest arrête l'exécution en cas d'échec ?

J'utilise Minitest comme exécuteur pour mes tests fonctionnels, en utilisant Selenium comme pilote pour exécuter le navigateur. Chaque test est modélisé comme MiniTest::Unit::TestCase.

Minitest rapporte le résumé de l'exécution lorsqu'il a terminé l'exécution de tous les tests. Les exceptions qui ont été rencontrées sont également imprimées vers la fin de l'exécution. Je trouve qu'il est difficile de déboguer lorsque quelque chose d'inattendu échoue car le contexte de l'exécution est perdu. Les exceptions que je rencontre ne sont pas déterministes.

Existe-t-il un moyen de faire en sorte que le runner Minitest arrête l'exécution des tests en cas d'exception ou d'échec d'assertion ?

J'utilise minitest (2.11.2) et ruby 1.9.2p290 (2011-07-09) [i386-mingw32].

4voto

r31n4ard Points 71

Essayez rails test -f le fera. Cela signifie l'abandon de l'exécution du test au premier échec ou à la première erreur.

3voto

Je pense que vous voulez dire qu'il faut avoir une option "fast fail" disponible. J'ai trouvé le fail_fast pour minitest (Test::Unit) : Backtrace et sortie immédiate mais il n'est plus d'actualité (il couvre toujours ce qui peut être fait). Je pense que vous aurez besoin de monkeypatch votre bibliothèque de test pour activer cette option. J'ai trouvé un Gist montrant comment faire ajouter une simple option d'échec à minitest/turn/minitest-rails donc ça pourrait vous mettre sur la bonne voie. Je comprends que votre problème est lié au premier article que j'ai référencé :

Lorsque je lance la suite Test::Unit dans mon projet Ruby on Rails 3 par l'intermédiaire de rake test et qu'un test échoue, le comportement par défaut est de simplement d'afficher "F" ou "E", de continuer à fonctionner jusqu'à ce que tous les tests soient je me tourne les pouces), et seulement ensuite, d'imprimer une trace de pile.

2voto

Ari Points 837

Comme je l'ai répondu aquí j'ai trouvé une perle pour : minitest-fail-fast . Il fonctionne avec Rails 4.2 et Minitest 5.6.1.

1voto

fwuensche Points 923

Il ne répond pas directement à la question, mais pourrait être très utile.

Vous pourriez utiliser pry-rescue afin que vos tests lancent une session de pry lorsque quelque chose ne va pas. Tout ce que vous avez à faire est d'ajouter la gemme dans votre Gemfile :

group :development, :test do
  gem 'pry-rescue'
end

Ensuite, lancez vos tests avec le drapeau suivant :

PRY_RESCUE_RAILS=1 rails test rails test test/integration/agendas_test.rb

1voto

RWDJ Points 128

Utilice -f .

En rubis pur, comme vous le demandez, cela signifie que ruby <file> -f .

Dans les rails, cela signifie rails test -f .

Minitest vérifiera les arguments du terminal pour l'option -f donc la façon dont vous l'appelez ne semble pas être pertinente pour l'enquête. -f drapeau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X