2017-03-07 8 views
3

Ich schaue auf Live-Test-Funktion im neuen Visual Studio (ich benutze NUnit).Visual Studio 2017 Live-Tests Ausschlüsse

Es gibt eine "Ausschluss" -Option für Komponententests, um anzuzeigen, dass bestimmte Tests nicht ausgeführt werden sollten (möglicherweise sind es Integrationstests oder langsame Tests oder was auch immer).

enter image description here

Wo diese Informationen gespeichert bekommen ist? Ich sehe keine Hinweise in der csproj oder anderswo, dass ein Test nicht in Live Testing enthalten sein sollte. Sollte es irgendwo eine Informationsdatei geben, die ich in die Quellcodeverwaltung einchecken kann, so dass der Rest meines Teams nicht manuell angeben muss, welche Tests nicht durch Live-Tests ausgeführt werden sollen?

Antwort

5

Ein-/Ausschließen ist eine Funktion auf Benutzerebene. Dies ist sehr nützlich, wenn Sie bestimmte Tests für eine bestimmte Editiersitzung ausführen oder Ihre eigenen persönlichen Einstellungen beibehalten möchten. Um zu verhindern, dass Tests ausgeführt werden und diese Informationen erhalten bleiben, könnten Sie beispielsweise Folgendes tun:

[ExcludeFromCodeCoverage] 
public class SkipLiveFactAttribute : FactAttribute 
{ 
    private static bool s_lutRuntimeLoaded = AppDomain.CurrentDomain.GetAssemblies().Any(a => a.GetName().Name == "Microsoft.CodeAnalysis.LiveUnitTesting.Runtime"); 

    public override string Skip => s_lutRuntimeLoaded ? "Test excluded from Live Unit Testing" : ""; 
} 

public class Class1 
{ 
    [SkipLiveFact] 
    public void F() 
    { 
     Assert.True(true); 
    } 
} 
+0

Dies scheint nicht zu funktionieren. Ich habe [ExcludeFromCodeCoverage] sowohl auf der Testmethode als auch auf der Testvorrichtung versucht. Der Test läuft noch. –

+1

Ja, dies verhindert nur die Visualisierung, Test läuft noch. Dies kann helfen: [ExcludeFromCodeCoverage] public class SkipLiveFactAttribute:.. FactAttribute { private static bool s_lutRuntimeLoaded = AppDomain.CurrentDomain.GetAssemblies() Gibt es (a => a.GetName() Name == „Microsoft.CodeAnalysis.LiveUnitTesting .Laufzeit"); öffentliche Überschreibung String Skip => s_lutRuntimeLoaded? "Test von Live Unit Testing ausgeschlossen": ""; } public class Class1 { [SkipLiveFact] public void F() { Assert.True (true); } } –

+2

Ich habe die obige Antwort aktualisiert und auch Text über ExcludeFromCodeCoverageAttribute entfernt, der falsch war. –