2010-05-27 27 views
12

Ho creato una suite di test in NUnit che fa riferimento a diversi dispositivi di prova dell'unità distinti in vari gruppi.NUnit non in esecuzione Suite test

ho praticamente usato il codice di esempio da 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; 
      } 
     } 
    } 
} 

Il mio obiettivo è quello di aggiungere diversi test per la lista di cui sopra in modo che io tutto posso correre in un batch.

Ma quando provo a caricare la DLL nella GUI di NUnit ottengo questo: alt text

Che cosa sto facendo di sbagliato?

Sono consapevole che i documenti dicono che la GUI non eseguirà suite, ma ho provato anche la console. Qualcuno può dirmi per favore quali Suites sono adatti e come posso usarli per raggiungere il mio obiettivo?

Sto usando nunit 2.5.0.9122.

Modifica

Beh, risposte sono imminenti. Alla fine ho trovato una soluzione alternativa: le categorie. Ho raggruppato i dispositivi di prova dando loro le categorie appropriate e quindi posso eseguire un sottoinsieme di essi in batch, ignorando comunque un altro sottoinsieme.

Ancora, molto strano che questa funzionalità Suite sembra essere completamente rotto.

+0

Ho aggiunto una taglia nella speranza di qualcuno spiegare a me che cosa Suite sono buoni per o come posso creare un lotto di test all'interno di un paio di assemblee senza correre tutti loro da linea di comando. –

+0

Un peccato che la taglia non ha aiutato ... L'unica risposta inviata non si avvicina a rispondere alla domanda. –

+0

Uso sempre le categorie per questo genere di cose. Sembra essere più ampiamente supportato. –

risposta

3

Suite non sono realmente necessari per qualsiasi cosa molto a tutti in questi giorni. Se si desidera utilizzarli solo per specificare quali test eseguire e non eseguire, ciò è molto meglio ottenuto con gli attributi Category. Questo è quello che hai finito e sembra la migliore soluzione al tuo problema.

Tuttavia, per altri e riferimenti futuri, è possibile utilizzare in Nunit. È necessario eseguirli dalla console e utilizzare solo l'opzione/fixture. Ad esempio, per eseguire la suite specificato sopra, ci si esegue (assumendo che la classe è stato compilato in un assembly AllTests.dll):

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

Non vedrete alcuna prova o modo di eseguire suite in la GUI - questo è annotato nella documentazione. È comunque possibile eseguirli dalla console incorporata nella GUI utilizzando comandi come sopra.


utilizzare suite in alcuni dei miei test perché ho alcuni casi d'uso strani che mi richiedono a volte ad avere bisogno di passare un argomento ai miei metodi di prova. Lo faccio creando una suite come quella qui sotto. Quindi ci sono alcuni usi per loro, solo nessuno ne ha bisogno nel tuo caso.

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

Per inciso, se qualcuno conosce un modo migliore per passare argomenti/controllare il comportamento di un test in fase di esecuzione rispetto a quello che ho fatto, si prega di commentare. Ho passato un po 'di tempo a cercare i documenti e le mailing list di Nunit e questo è stato il meglio che ho potuto inventare! – imoatama

3

C'è qualche motivo per cui si restituisce "IEnumerable" anziché "TestSuite"?

[Suite] 
public static TestSuite Suite 

Aggiornamento

Leggendo la piccola stampa nella parte inferiore della pagina sul sito NUnit, sembra che le prove di tipo Suite non mostrerà in nel corridore Gui, quindi credo che questo è il problema :)

Le suite non sono attualmente visualizzate nel Gui o vengono eseguite automaticamente da un corridore quando si incontrano. Lo scopo storico del meccanismo Suite era di fornire un modo per aggregare i test al livello più alto di ogni analisi. Quindi, sono supportati solo se usati con l'opzione/fixture sulla console o sulla riga di comando di GUI.

Update 2

Non sono sicuro di ciò che si sta cercando di raggiungere con la funzione "Suite", ma se si sta cercando di trovare un modo di configurare un insieme di linee di prova per essere correre insieme, ho usato "NUnit Test Projects" per fare questo in passato (è solo un file di configurazione xml che elenca le dll di test). Questo permette un insieme fisso di riferimenti di montaggio di prova da configurare e quindi caricato nella GUI o gestito dal corridore console:

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

+0

Questo è ciò che i documenti dicono che dovrei fare: http://www.nunit.org/index.php?p=suite&r=2.4.7 Penso che abbia a che fare con il disaccoppiamento della versione di NUnit dal test stesso. –

+0

a. Non sto usando l'opzione/fixture e, cosa più importante, b. come dovrei gestire la suite? Ho provato sia la GUI che la console .. non funziona. –

+0

Grazie, ci provo. Ma per rispondere alla tua domanda, sì, è quello che sto cercando di ottenere, e ho avuto l'impressione che sia per questo che sono le Suite. Se no, a cosa servono? –