MSTEST0069: Ärvda [TestClass] ignoreras av MSTest-källgeneratorn

Property Value
Regel-ID MSTEST0069
Title Ärvd [TestClass] ignoreras av MSTest-källgeneratorn
Kategori Usage
Korrigeringen är antingen brytande eller icke-brytande Non-breaking
Aktiverad som standard Yes
Standard allvarlighetsgrad Varning
introducerades i version 4.3.0
Finns det en kodkorrigering No

Note

Den här analysatorn levereras i paketet MSTest.SourceGeneration och läses endast in för projekt som har valt att använda MSTest-källgenerator för reflektion, vilket är en experimentell funktion. Det gäller inte när den reflektionsbaserade standardupptäckten används.

Orsak

En klass är avsedd som en MSTest-testklass via ett [TestClass] attribut som den ärver från en basklass i stället för att [TestClass] deklarera direkt.

Regelbeskrivning

MSTest-källgeneratorn räknar upp testklasser med hjälp av ForAttributeWithMetadataName, som inte följer arv. En klass som förlitar sig på att ärva [TestClass] från en bastyp utelämnas utan varning från källgenererad upptäckt och kommer inte att kunna köras när den källgenererade providern är den aktiva reflektionsbakänden.

[TestClass]
public class BaseTests
{
}

// Violation: relies on the inherited [TestClass] attribute.
public class DerivedTests : BaseTests
{
    [TestMethod]
    public void Test()
    {
    }
}

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

Tillämpa [TestClass] direkt på den härledda klassen så att den identifieras när källgenererad identifiering är aktiv.

[TestClass]
public class BaseTests
{
}

[TestClass]
public class DerivedTests : BaseTests
{
    [TestMethod]
    public void Test()
    {
    }
}

När du ska ignorera varningar

Ignorera inte varningar från den här regeln när källgenerering är aktiverat, eftersom den berörda testklassen inte identifieras eller körs. Du kan förhindra det om klassen inte är avsedd att vara en testklass.

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

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

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