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.
| 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.