MSTEST0073: Bevorzugen einer Konstante für den Ressourcenschlüssel "[ResourceLock]"

Eigenschaft Wert
Regel-ID MSTEST0073
Title Bevorzugen Sie eine Konstante für den Ressourcenschlüssel "[ResourceLock]"
Kategorie Usage
Die Behebung ist eingreifend oder nicht eingreifend Non-breaking
Standardmäßig aktiviert Ja
Voreingestellte Schwere Info
wurde in Version eingeführt. 4.4.0 (Vorschau)
Gibt es eine Codekorrektur No

Important

ResourceLockAttribute ist für MSTest 4.4 geplant und ist nur in Vorschaubuilds verfügbar, bis MSTest 4.4.0 veröffentlicht wird.

Ursache

Ein [ResourceLock] Attribut übergibt seinen Ressourcenschlüssel als bares Zeichenfolgenliteral, anstatt auf eine freigegebene Konstante zu verweisen.

Regelbeschreibung

[ResourceLock] vergleicht Tests nach exakter Zeichenfolgengleichheit bei der Groß-/Kleinschreibung des Ressourcenschlüssels. Ein bares Zeichenfolgenliteral schlägt fehl: Ein Tippfehler erzeugt einen anderen Schlüssel, sodass die widersprüchlichen Tests nicht mehr serialisiert und im Hintergrund ausgeführt werden, anstatt mit einem Buildfehler zu fehlschlagen. Durch Verweisen auf eine freigegebene Konstante, z. B. ein WellKnownResources Mitglied oder Eigene const, wird Tippfehler als Kompilierungsfehler ausgeführt und der Compiler kann erzwingen, dass jeder Test, der für dieselbe Ressource angibt, denselben Schlüssel verwendet.

[ResourceLock("database")] // Violation: bare string literal.
[TestMethod]
public void ReadsSharedSchema() { }

Wie man Verstöße behebt

Verweisen Sie auf ein WellKnownResources Mitglied für den prozess-globalen Zustand, oder deklarieren Und verweisen Sie auf Eigene const string.

private const string Database = "database";

[ResourceLock(Database)]
[TestMethod]
public void ReadsSharedSchema() { }

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, diese Warnung zu unterdrücken, wenn Sie absichtlich einen Literalressourcenschlüssel verwenden und sicher sind, dass kein anderer Test in der Assembly für dieselbe Ressource koordiniert werden muss.

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 MSTEST0073
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0073

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0073.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch