2016-05-19 7 views
7

Ich mache den Übergang von NUnit zu XUnit (in C#), und ich schrieb einige "Integrierte Tests" (ITs), die ich nicht unbedingt als Teil meines automatisierten Build-Prozesses ausführen soll. Normalerweise tue ich das für den manuellen Test, wenn der vollständige End-to-End-Prozess aufgrund von Umgebungsfaktoren (fehlende Daten usw.) nicht funktioniert.Können Sie XUnit Tests als Explicit markieren?

In NUnit könnten Sie einen Test mit der Explicit attribute markieren und es würde nur übersprungen werden durch den Testläufer (es sei denn, Sie haben den Test mit einer spezifischen Category attribute markiert und dem Testläufer mitgeteilt, dass er diese Kategorie explizit anvisiert).

Hat XUnit eine ähnliche Möglichkeit, Tests vom Test Runner auszuschließen?

Antwort

1

Sie können das [Trait] Attribut für das, wie in der xunit example zB

[Trait ("Category", "Integration")] 

Dieses project weiter ein wenig nimmt und erbt Kategorien wie Einheit, Integration etc.

+3

Dies gilt nicht eindeutig eine Art und Weise dar, ein Testverfahren in einer solchen Art und Weise zu schmücken, dass es in der Lage sein wird, manuell getestet, aber nicht mit dem gesamten Test-Suite laufen. –

7

Ich denke, ich found it. Anscheinend können Sie Ihr [Fact] Attribut wie folgt ändern: [Fact(Skip="reason")]. Dadurch wird der Test übersprungen, aber Sie können ihn nicht manuell ausführen, ohne das Attribut wieder auf normal zu setzen.

Ich werde weiter nach einem besseren Weg suchen.

2

Jimmy Bogard löste das mit einem netten RunnableInDebugOnlyAttribute. Sehen Sie dieses Blog-Post: Run tests explicitly in xUnit.net

public class RunnableInDebugOnlyAttribute : FactAttribute 
{ 
    public RunnableInDebugOnlyAttribute() 
    { 
     if (!Debugger.IsAttached) 
     { 
      Skip = "Only running in interactive mode."; 
     } 
    } 
}