2013-02-12 11 views

risposta

19

No - non esiste una struttura allo stato attuale,

Un modo rapido di ottenere l'effetto in xUnit è di commentare il public - le classi private non vengono riflesse (ovviamente non apparirà nell'elenco skip in quel modo però).

Considerare di registrarlo come un problema su CodePlex se si ritiene che il bisogno di questo sia sufficientemente comune (personalmente non riesco a immaginare di svenderlo perché semplicemente non mi imbatto in casi in cui ho bisogno di saltare un'intera classe di test. di prove).

AGGIORNAMENTO: Un altro modo è quello di mettere un TraitAttribute sulla classe e poi (supponendo che si sta utilizzando il xunit.console runner) filtrare fuori eseguendo con /-trait traitName. (ad esempio, è possibile ottenere ExplicitAttribute, alcuni aspetti della tecnica BDD per framework di test in sospeso e semantica simile in questo modo - ovviamente il grosso problema è che non vengono visualizzati in nessun report quando si utilizza una di queste tecniche di filtraggio)

aggiornamento 2: si può fare

const string skip = "Class X disabled"; 

[Fact(Skip=skip)] 
void Test() {} 

Quindi è possibile cambiare a const string skip = null per annullare il salto. La (dis) vantaggio di questo è che il test è ancora indicato come test Saltato nella lista di prova, in genere con un motivo incluso nel rapporto test (vs rendendo private che lo rende suscettibili di essere dimenticato)

+0

@woni Aggiunto idea di utilizzare un tratto nel caso in cui accade per adattarsi al contesto (io non assumo però!) –

+2

Con xUnit> = 2.3 viene visualizzato un messaggio di errore 'errore xUnit1000: classi di test devono essere public' –

+0

@ andrei.ciprian puoi chiarire da dove viene questo errore/come è emerso? (IIRC è un plugin Roslyn che lo contrassegna nell'IDE, non in fase di runtime?) –

0

Aggiunta di un motivo quasi dopo un anno dalla domanda iniziale. Ho una serie di test che chiamano veri e propri apis del server, e mi piacerebbe essere eseguito su richiesta. Con nUnit, ha attributo Ignore: con quel set, il test runner salterà quei test, ma posso comunque eseguirlo manualmente.

xUnità non ha questa caratteristica. Quello più vicino sta impostando un attributo di livello di classe e commentandolo quando voglio eseguirlo.

1

Ecco il mio trucco per evitare errori xUnit1000: classi di test devono essere pubbliche (controllato su singolo fatto, penso teorie possono essere manipolati in questo modo, anche).

// Uncomment to enable tests 
//public class FactSwitch : FactAttribute { } 

// Uncomment to disable tests 
internal class FactSwitch : Attribute { } 

public class MyTests 
{ 
    [FactSwitch] 
    public void MyTest1() 
    { 
     "it".ShouldBe("it"); 
    } 
} 
+1

L'uso di '#define Fact Attribute' è più compatto e consente di continuare ad usare' [Fatto] '. –

+0

Sarebbe bello, ma non è C++, ci sono limitazioni per l'uso di #define –

Problemi correlati