Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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.