2010-05-27 6 views
12

J'ai créé une suite de tests dans NUnit qui fait référence à plusieurs appareils de test unitaires distincts dans divers assemblages.NUnit non exécuté Suite tests

Je suis à peu près utilisé l'exemple de code de NUnit's docs:

namespace NUnit.Tests 
{ 
    using System; 
    using NUnit.Framework; 
    using System.Collections; 

    public class AllTests 
    { 
     [Suite] 
     public static IEnumerable Suite 
     { 
      get 
      { 
       ArrayList suite = new ArrayList(); 
       suite.Add(new VisionMap.DotNet.Tests.ManagedInteropTest.DotNetUtilsTest()); 
       return suite; 
      } 
     } 
    } 
} 

Mon but est d'ajouter plusieurs tests à la liste ci-dessus afin que je puisse les exécuter tous dans un lot.

Mais lorsque je tente de charger la DLL dans l'interface de NUnit je reçois ceci: alt text

Qu'est-ce que je fais mal?

Je suis conscient que les docs disent que l'interface graphique ne fonctionnera pas les suites, mais j'ai aussi essayé la console. Quelqu'un peut-il me dire ce que les Suites sont bonnes et comment je peux les utiliser pour atteindre mon objectif? J'utilise nunit 2.5.0.9122.

Modifier

Eh bien, pas de réponses sont à venir. J'ai trouvé une solution alternative à la fin: Catégories. Je groupe les appareils de test en leur donnant les catégories appropriées et ensuite je peux en exécuter un sous-ensemble en batch, tout en ignorant un autre sous-ensemble.

Encore, très étrange que cette fonctionnalité de la suite semble être complètement brisée.

+0

J'ai ajouté une prime dans l'espoir de quelqu'un pour me expliquer ce que Suites sont bons pour ou comment je peux créer un lot de tests à partir de quelques assemblées sans courir tous de la ligne de commande. –

+0

Dommage que la générosité n'a pas aidé ... La seule réponse affichée ne vient pas près de répondre à la question. –

+0

J'utilise toujours des catégories pour ce genre de chose. Il semble être plus largement soutenu. –

Répondre

3

Suites ne sont pas vraiment nécessaires pour quoi que ce soit bien à tous ces jours-ci. Si vous vouliez seulement les utiliser pour spécifier quels tests sont exécutés et non exécutés, cela est beaucoup mieux réalisé avec les attributs de catégorie. C'est ce que vous avez fini par faire, et semble être la meilleure solution à votre problème.

Cependant, pour d'autres références et futures, peut toujours utiliser Suites in Nunit. Vous devez les exécuter depuis la console et utiliser uniquement l'option/fixture. Par exemple, pour exécuter la suite spécifié ci-dessus, vous lancerez la (en supposant que votre classe a été compilée dans un ensemble AllTests.dll):

nunit-console /fixture:AllTests.Suite AllTests.dll 

Vous ne verrez aucune preuve ou moyen d'exécuter des suites dans l'interface graphique - ceci est noté dans la documentation. Vous pouvez cependant les exécuter à partir de la console qui est intégrée dans l'interface graphique en utilisant des commandes comme ci-dessus.


-je utiliser des suites dans certains de mes tests parce que j'ai quelques cas d'utilisation bizarres qui me obligent à parfois besoin de passer un argument à mes méthodes d'essai. Je fais ceci en créant une suite telle que ci-dessous. Donc, il y a des utilisations pour eux, mais rien de nécessaire dans votre cas.

[Suite] 
    public static IEnumerable MySuite 
    { 
     get 
     { 
      var suite = new ArrayList{new TestClass1(arg1), TestClass2(arg2)}; 
      return suite; 
     } 
    } 
+0

Incidemment, si quelqu'un connaît un meilleur moyen de passer des arguments/contrôler le comportement d'un test à l'exécution que ce que j'ai fait, s'il vous plaît commenter. J'ai passé un peu de temps à chercher des docs et des listes de diffusion de Nunit et c'était le meilleur que je pouvais trouver! – imoatama

3

Y a-t-il une raison pour laquelle vous renvoyez "IEnumerable" au lieu de "TestSuite"?

[Suite] 
public static TestSuite Suite 

Mise à jour

Lecture de la petite impression au bas de la page sur le site NUnit, il ressemble à des tests de type Suite ne montrera pas dans dans le canal Gui, donc je suppose que c'est la question :)

Les suites ne sont actuellement pas affichées dans le Gui ni ne sont exécutées automatiquement par l'un ou l'autre coureur lorsqu'elles sont rencontrées. L'objectif historique du mécanisme Suite était de fournir un moyen d'agréger les tests au niveau supérieur de chaque exécution. Par conséquent, ils sont uniquement pris en charge lorsqu'ils sont utilisés avec l'option/fixture sur la console ou la ligne de commande gui.

Mise à jour 2

Je ne sais pas ce que vous essayez d'atteindre avec la fonction « Suite », mais si vous essayez de trouver un moyen de configurer un ensemble d'ensembles de test à Exécuter ensemble, j'ai utilisé "NUnit Test Projects" pour le faire dans le passé (c'est juste un fichier de configuration XML liste des DLL de test). Cela permet à un ensemble fixe de références d'assemblage de test à configurer puis chargé dans l'interface graphique ou exécuter par le coureur de la console:

http://www.nunit.org/index.php?p=multiAssembly&r=2.5.5

+0

C'est ce que les docs disent que je devrais faire: http://www.nunit.org/index.php?p=suite&r=2.4.7 Je pense qu'il s'agit de découpler la version de NUnit du test lui-même. –

+0

a. Je n'utilise pas l'option/fixture et, plus important encore, b. comment je suis supposé diriger la suite? J'ai essayé à la fois l'interface graphique et la console .. cela ne fonctionne pas. –

+0

Merci, je vais essayer à la place. Mais pour répondre à votre question, oui, c'est ce que j'essaie d'accomplir, et j'avais l'impression que c'est ce que sont les Suites. Si non, à quoi servent-ils? –