Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| 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.