MSTEST0073: Föredrar en konstant för resursnyckeln [ResourceLock]

Property Value
Regel-ID MSTEST0073
Titel Föredrar en konstant för resursnyckeln [ResourceLock]
Kategori Usage
Korrigeringen är antingen brytande eller icke-brytande Oumbrytbar
Aktiverad som standard Yes
Standard allvarlighetsgrad Info
introducerades i version 4.4.0 (förhandsversion)
Finns det en kodkorrigering No

Important

ResourceLockAttribute är planerat för MSTest 4.4 och är endast tillgängligt i förhandsversioner tills MSTest 4.4.0 släpps.

Orsak

Ett [ResourceLock] attribut skickar resursnyckeln som en strängliteral utan sträng i stället för att referera till en delad konstant.

Regelbeskrivning

[ResourceLock] matchar tester efter exakt, skiftlägeskänslig strängjämlikhet för resursnyckeln. Det går inte att öppna en bare string-literal: ett stavfel skapar en annan nyckel, så de motstridiga testerna serialiseras inte längre och körs tyst i stället för att misslyckas med ett byggfel. Om du refererar till en delad konstant, till exempel en WellKnownResources medlem eller en egen const, blir skrivfel ett kompileringsfel och gör att kompilatorn kan framtvinga att varje test som körs på samma resurs använder samma nyckel.

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

Så här åtgärdar du överträdelser

Referera till en WellKnownResources medlem för process-global stat, eller deklarera och referera till din egen const string.

private const string Database = "database";

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

När du ska ignorera varningar

Det är säkert att ignorera den här varningen om du avsiktligt använder en literal resursnyckel och är säker på att inget annat test i sammansättningen behöver samordnas för samma resurs.

Undertryck en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable MSTEST0073
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0073

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även