2010-09-24 8 views
7

Abbiamo diverse centinaia di classi di test, con poche decine di loro contrassegnati con i seguenti attributi: [TestFixture] [Explicit] [Categoria ("IntegrationTests")] in modo che verrà eseguito solo nel nostro over-night build automatizzato. I rimanenti TestFixtures non hanno una categoria specificata (e non sono contrassegnati come espliciti).Quando si esegue NUnit e si specifica una categoria, è possibile includere anche tutti i test non categorizzati?

Ecco il compito NAnt stiamo correndo ad eseguire i nostri test:

<nunit2> 
    <test> 
     ... 
     <categories> 
      <include name="IntegrationTests" /> 
     </categories> 
     ... 
    </test> 
</nunit2> 

Questo, naturalmente, non eseguire qualsiasi dei test non categorizzati.

mi piacerebbe essere in grado di fare qualcosa del genere:

<nunit2> 
    <test> 
     ... 
     <categories> 
      <include name="*" /> 
      <include name="IntegrationTests" /> 
     </categories> 
     ... 
    </test> 
</nunit2> 

in cui tutti i test non categorizzati verrà eseguito insieme con i test di integrazione. È possibile? In tal caso, qual è la sintassi?

(Nota:.. Sto cercando una soluzione sia NAnt, come sopra, oppure una soluzione NUnit della riga di comando posso certamente correre NUnit due volte con diverse opzioni, o mettere le categorie su tutti i miei TestFixtures Queste sono soluzioni alternative che sto bene usando se devo, ma sarebbe più bello poter specificare direttamente i test non categorizzati.)

risposta

0

No, data la situazione, non c'è modo di fare ciò che vuoi in una singola serie di NUnit. Se togli l'attributo esplicito, puoi farlo in un'unica esecuzione escludendo tutti i test categorizzati che non desideri.

In sostanza, se si effettua il salto per categorie, tutti i test si dovrebbe essere classificato.

+0

sarei bene con che se c'è un modo per garantire che tutti i test sono suddivisi in categorie? – bacar

8

Sono sulla stessa barca e mi sentivo frustrato fino a quando ho scoperto che l'attributo Categoria può essere applicato non solo a un test o ad un dispositivo di prova, ma a un intero assieme.

ho due linee di prova con i test che ho eseguito a livello locale, e un altro con i test che devono essere eseguiti solo sul server di build. Ho aggiunto questo attributo in AssemblyInfo.cs nei primi due progetti: [assembly: NUnit.Framework.Category("Always")]. Il terzo progetto di test utilizza gli attributi di categoria come [Explicit, Category("PublicDatabase")] come descritto. Il server di build invoca NUnit con /include=Always,PublicDatabase e ha il risultato desiderato: tutte le prove nei primi due gruppi di eseguire, e solo le PublicDatabase test nella terza prova assemblaggio.

Quando eseguo NUnit localmente nei primi due progetti, lo eseguo solo sui singoli assiemi e non è necessario specificare categorie.

+0

IIUC, questo non solo eseguirà "anche tutti i test non categorizzati". Verranno eseguiti anche tutti i test (dall'assembly che ha la categoria del livello di assemblaggio), inclusi eventuali test in là che hanno una categoria esplicita (presumo che le categorie siano additive)? – bacar

Problemi correlati