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:
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:
Beachten Sie, dass die Gesamtabdeckung der Datei in beiden Fällen die gleiche ist.
Kann ich irgendetwas dagegen tun?
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
Alle Ihre Test Assemblies würden wahrscheinlich profitieren von '[ExcludeFromCodeCoverage]' – Kritner
@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