MSTEST0082: En testklass ärver en livscykel eller testmetod från en annan MSTest-version

Property Value
Regel-ID MSTEST0082
Titel En testklass ärver en livscykel eller testmetod från en annan MSTest-version
Kategori Usage
Korrigeringen är antingen brytande eller icke-brytande Oumbrytbar
Aktiverad som standard Yes
Standard allvarlighetsgrad Varning
introducerades i version 4.4.0 (förhandsversion)
Finns det en kodkorrigering No

Important

Den här analysatorn är planerad för MSTest 4.4 och är endast tillgänglig i förhandsversioner tills MSTest 4.4.0 släpps.

Orsak

En identifieringsbar testklass ärver en offentlig testmetod eller livscykelmetod från en sammansättning som refererar till en annan huvudversion av MSTest.

Regelbeskrivning

MSTest matchar test- och livscykelattribut med exakt körningstypidentitet. MSTest v3 definierar dessa attribut i Microsoft.VisualStudio.TestPlatform.TestFramework, medan MSTest v4 definierar dem i MSTest.TestFramework. Om ett basbibliotek och ett härlett testprojekt använder olika huvudversioner ignorerar adaptern tyst ärvda attribut från den andra ramverkssammansättningen. Därför identifieras inte ärvda tester och ärvda initierings- eller rensningsmetoder körs inte.

Ett delat testbibliotek som skapats med MSTest v3 kan till exempel deklarera:

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

Ett MSTest v4-projekt som härleds från basklassen utlöser diagnostiken:

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

Analysatorn kontrollerar ärvda testmetoder, testar initierings- och rensningsmetoder samt klassinitierings- och rensningsmetoder som är konfigurerade att köras för härledda klasser.

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

Referera till samma MSTest-huvudversion från basbiblioteket och det härledda testprojektet. Kompilera om sammansättningen som deklarerar basklassen och kompilera om sammansättningen som deklarerar det anpassade attributet för ett anpassat attribut som härleds från ett MSTest-attribut.

När du ska ignorera varningar

Ignorera inte varningar från den här regeln. En överträdelse innebär att MSTest tyst hoppar över ärvda tester eller livscykelmetoder.

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

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

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

Se även