MSTEST0082: Een testklasse neemt een levenscyclus of testmethode over van een andere MSTest-versie

Property Value
Regel-ID MSTEST0082
Title Een testklasse neemt een levenscyclus of testmethode over van een andere MSTest-versie
Categorie Usage
Fix kan brekend of niet-brekend zijn Non-breaking
standaard ingeschakeld Yes
standaardniveau van ernst Warning
geïntroduceerd in versie 4.4.0 (preview)
Is er een oplossing voor de code No

Important

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

Oorzaak

Een detecteerbare testklasse neemt een openbare testmethode of levenscyclusmethode over van een assembly die verwijst naar een andere primaire versie van MSTest.

Beschrijving van regel

MSTest komt overeen met test- en levenscycluskenmerken op basis van de exacte identiteit van het runtime-type. MSTest v3 definieert deze kenmerken in Microsoft.VisualStudio.TestPlatform.TestFramework, terwijl MSTest v4 deze in MSTest.TestFrameworkdefinieert. Als een basisbibliotheek en een afgeleid testproject verschillende hoofdversies gebruiken, negeert de adapter zonder melding geërfde kenmerken van de andere framework-assembly. Hierdoor worden overgenomen tests niet gedetecteerd en worden overgenomen initialisatie- of opschoonmethoden niet uitgevoerd.

Een gedeelde testbibliotheek die is gebouwd met MSTest v3, kan bijvoorbeeld declareren:

public abstract class SharedTests
{
    [TestMethod] public void InheritedTest() { }
}

Een MSTest v4-project dat is afgeleid van de basisklasse activeert de diagnose:

[TestClass]
public sealed class ProductTests : SharedTests { } // Violation

De analyse controleert overgenomen testmethoden, test initialisatie- en opschoonmethoden en methoden voor klasseinitialisatie en opschoning die zijn geconfigureerd voor uitvoering voor afgeleide klassen.

Hoe schendingen op te lossen

Verwijs naar dezelfde primaire MSTest-versie uit de basisbibliotheek en het afgeleide testproject. Compileer de assembly die de basisklasse declareert opnieuw en compileer, voor een aangepast attribuut dat is afgeleid van een MSTest-attribuut, de assembly die het aangepaste attribuut declareert opnieuw.

Wanneer waarschuwingen onderdrukken

Onderdrukt geen waarschuwingen van deze regel. Een schending betekent dat MSTest overgenomen tests of levenscyclusmethoden op de achtergrond overslaat.

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

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.MSTEST0082.severity = none

Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.

Zie ook