2012-02-23 2 views
4

J'ai écrit plusieurs tests d'intégration de bout en bout à long terme en utilisant SpecFlow, mais ils échouent en raison des délais d'attente Nunit. L'ajout de l'attribut [Timeout (x)] à TestFixture permet de résoudre le problème, mais il est bien entendu remplacé chaque fois que la fonction est mise à jour.Définir Nunit TimeoutAttribute à partir de SpecFlow

Comment puis-je supprimer ou prolonger le délai d'attente d'une manière que SpecFlow respectera?

Répondre

1

Je commence seulement à comprendre Specflow mais pourriez-vous implémenter un tag personnalisé qui pourrait faire cela? Peut-être pourriez-vous les placer aux crochets BeforeScenario ou BeforeFeature?

+0

Je ne sais pas, pour être honnête, et ont en fait pas utilisé SpecFlow plus d'un an après avoir changé l'employeur. Les nouveaux mecs commencent tout juste à l'apporter, alors je pourrais l'essayer bientôt. – mavnn

+0

[BeforeScenario ("TagName)] – AndyM

1

De combien de temps parlons-nous? > 1 minute? Est-ce que ce doit être un test d'intégration complet? Je lisais le livre de concombre - il a suggéré que vous trichez autant que possible pour vos étapes données pour réduire le temps qu'il faut pour que les choses courent. Les étapes données décrivent le passé.

J'ai un formulaire de demande qui comporte 5 sections à remplir et qui ne peut être soumis qu'une fois toutes les sections terminées. Je voulais tester certaines fonctionnalités qui se produisent lors de la soumission de l'application, à l'origine mes instructions GIVEN conduisaient la page Web via Selenium pour compléter les 5 sections du formulaire afin que je puisse soumettre, je l'ai changé en une seule commande SQL pour configurer l'application statut pour toutes les sections à compléter. Cela a coupé environ une minute de l'exécution.

La chose que je testais était le comportement de soumission, le remplissage des sections de tests se fait ailleurs.

+0

Vous pourriez faire un point, mais dans ce cas précis, j'utilisais légèrement SpecFlow comme un moyen rapide d'écrire des tests de bout en bout, le but étant de simuler le moins possible – mavnn

+0

@mavnn, je pensais que j'étais la seule personne qui ait jamais pu écrire «pourrait» quand ils voulaient dire «bien» .C'est la première fois que je vois que ce n'est pas moi, à moins que les gens ne le fassent c'est beaucoup mais je ne le remarque pas pour la même raison que je le fais moi-même, je le pense tout de suite – Holf

+1

@Holf - non, je fais ça tout le temps, je parle de tapage phonétique, presque jamais écrire à la main :) Tout mot qui ressemble à un autre est un jeu équitable, et le pire est que les vérificateurs d'orthographe n'aident pas! – mavnn

2

Comme le dit @DisscCoder, Ajouter une catégorie d'étiquette au scénario dans le fichier de fonctionnalités et ajouter un crochet qui correspond à une classe de crochets .... SpecFlow exécute le code crochet avant de code de scénario pour tous les scénarios où la correspond à une chaîne.

namespace ClassLibrary1 
{ 
    [Binding] 
    public class Hooks1 
    {    
     [BeforeScenario("LongTest")] 
     public void BeforeScenario() 
     { 
      // Code to set Nunit timeout 
     }       
    } 
} 

Gherkin:

@LongTest 
Scenario: Calc Pi to 1m digits (long) 
    Given I am computing PI 
    And my precision is 1 million digits 
    Then my result is 3.14... 
+0

Quel est le 'Code pour mettre nunit timeout'? –

Questions connexes