MSTEST0073: De voorkeur geven aan een constante voor de resourcesleutel [ResourceLock]

Property Waarde
Regel-ID MSTEST0073
Title Geef de voorkeur aan een constante voor de resourcesleutel [ResourceLock]
Categorie Usage
Fix kan brekend of niet-brekend zijn Non-breaking
standaard ingeschakeld Yes
standaardniveau van ernst Informatie
geïntroduceerd in versie 4.4.0 (preview)
Is er een oplossing voor de code No

Important

ResourceLockAttribute is gepland voor MSTest 4.4 en is alleen beschikbaar in preview-versies totdat MSTest 4.4.0 wordt uitgebracht.

Oorzaak

Een [ResourceLock] kenmerk geeft de resourcesleutel door als een letterlijke letterlijke tekenreeks in plaats van te verwijzen naar een gedeelde constante.

Beschrijving van regel

[ResourceLock] komt overeen met tests op exacte, hoofdlettergevoelige tekenreeks gelijkheid van de resourcesleutel. Een letterlijke letterlijke tekenreeks mislukt: een typefout produceert een andere sleutel, zodat de conflicterende tests niet langer worden geserialiseerd en op de achtergrond racen in plaats van te mislukken met een buildfout. Als u verwijst naar een gedeelde constante, zoals een WellKnownResources lid of uw eigen constconstante, wordt een compilatiefout gemaakt en kan de compiler afdwingen dat elke test die op dezelfde resource strijdt, dezelfde sleutel gebruikt.

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

Hoe schendingen op te lossen

Verwijs naar een WellKnownResources lid voor een proces-globale status of declareer en verwijs naar uw eigen const stringland.

private const string Database = "database";

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

Wanneer waarschuwingen onderdrukken

Het is veilig om deze waarschuwing te onderdrukken als u opzettelijk een letterlijke resourcesleutel gebruikt en zeker weet dat er geen andere test in de assembly moet worden gecoördineerd op dezelfde resource.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

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

Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.

Zie ook