Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | MSTEST0061 |
| Title | Verwenden des OSCondition-Attributs anstelle von Laufzeitüberprüfungen |
| Kategorie | Usage |
| Die Behebung ist eingreifend oder nicht eingreifend | Non-breaking |
| Standardmäßig aktiviert | Yes |
| Voreingestellte Schwere | Info |
| wurde in Version eingeführt. | 4.1.0 |
| Gibt es eine Codekorrektur | Yes |
Ursache
Eine Testmethode verwendet IsOSPlatform(OSPlatform) Prüfungen mit einer frühen Rückgabe anstelle des OSConditionAttribute Attributs.
Regelbeschreibung
Wenn Sie Tests basierend auf dem Betriebssystem überspringen möchten, verwenden Sie das OSConditionAttribute Attribut anstelle manueller Laufzeitprüfungen. Der Attribut-Ansatz bietet eine bessere Testauffindbarkeit und klarere Testabsicht und integriert sich ordnungsgemäß in Testframeworks, um Tests als übersprungen statt als bestanden zu markieren.
using System.Runtime.InteropServices;
[TestClass]
public class TestClass
{
[TestMethod]
public void TestMethod()
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) // Violation
{
return;
}
// Test code that requires Windows
}
}
Wie man Verstöße behebt
Ersetzen Sie die Laufzeitüberprüfung durch das [OSCondition] Attribut.
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class TestClass
{
[TestMethod]
[OSCondition(OperatingSystems.Windows)]
public void TestMethod()
{
// Test code that requires Windows
}
}
Das [OSCondition] Attribut unterstützt die folgenden Betriebssysteme:
OperatingSystems.Linux-
OperatingSystems.OSX(macOS) OperatingSystems.WindowsOperatingSystems.FreeBSD
Sie können auch mehrere Betriebssysteme mit Bitweise ORkombinieren:
[TestMethod]
[OSCondition(OperatingSystems.Windows | OperatingSystems.Linux)]
public void TestMethod()
{
// Test code that requires Windows or Linux
}
Wann sollten Warnungen unterdrückt werden?
Sie können diese Warnung unterdrücken, wenn die Laufzeitüberprüfung komplexer als ein einfaches frühes Rückgabemuster ist oder wenn Sie bedingte Logik ausführen müssen, die nicht mithilfe des [OSCondition] Attributs ausgedrückt werden kann.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable MSTEST0061
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0061
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, setzen Sie dessen Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0061.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.