2017-07-21 1 views
1

In Visual Studio 2017 wird eine schließende Klammer nach einer Anweisung, die eine Ausnahme auslöst, als unbedeckt betrachtet.Fehlende Codeabdeckung für schließende Klammer nach Code, der eine Ausnahme auslöst

In meinem Fall habe ich einen Test überprüft, ob ein Nullreferenceexception geworfen wird:

[Fact] 
public void PassingNullConsoleWriter_ThrowsArgumentNullException() 
{ 
    Assert.Throws<ArgumentNullException>(() => new UsagePrinter(null)); 
} 

Analyzing Codeabdeckung in dieser Form des Codes markiert den ganzen Körper des Lambda als aufgedeckt, was offensichtlich nicht wahr ist:

Code Coverage marks body of lambda uncovered

das Lambdas einer Aussage Lambda-Erweiterung enthüllt, dass es tatsächlich die schließende Klammer nach der Anweisung wird die Ausnahme zu werfen, die aufgedeckt gelten:

Code Coverage marks the closing brace uncovered

Beachten Sie, dass die Gesamtabdeckung der Datei in beiden Fällen die gleiche ist.

Kann ich irgendetwas dagegen tun?

+0

Sie sollten keine Codeabdeckung bei Tests ausführen, Sie führen Codeabdeckung für den Code aus, für den die Tests ausgeführt werden. – Kritner

+0

Alle Ihre Test Assemblies würden wahrscheinlich profitieren von '[ExcludeFromCodeCoverage]' – Kritner

+0

@Kritner, vielen Dank für Ihren Kommentar. Klar, ich kann (und werde wahrscheinlich) das tun. Aber ich möchte die Test-Assemblys abdecken, um den ungenutzten Testinfrastruktur-Code zu enthüllen. – paulroho

Antwort

1

Was ist damit?

+0

Danke für den Vorschlag, aber das Ergebnis ist im Grunde das Gleiche. Die schließende Klammer wird als unbedeckt angesehen. Also werde ich eine der anderen Routen nehmen, die Sie beschrieben haben. – paulroho

Verwandte Themen