Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| 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.