MSTEST0069: Overgenomen [TestClass] wordt genegeerd door de MSTest-brongenerator

Property Value
Regel-ID MSTEST0069
Title Overgenomen [TestClass] wordt genegeerd door de MSTest-brongenerator
Categorie Usage
Fix kan brekend of niet-brekend zijn Non-breaking
standaard ingeschakeld Yes
standaardniveau van ernst Warning
geïntroduceerd in versie 4.3.0
Is er een oplossing voor de code No

Note

Deze analyse wordt in het MSTest.SourceGeneration pakket geleverd en wordt alleen geladen voor projecten die hebben gekozen voor de MSTest-reflectiebrongenerator. Dit is een experimentele functie. Deze is niet van toepassing wanneer de standaarddetectie op basis van weerspiegeling wordt gebruikt.

Oorzaak

Een klasse is bedoeld als een MSTest-testklasse via een [TestClass] kenmerk dat wordt overgenomen van een basisklasse, in plaats van rechtstreeks te [TestClass] declareren.

Beschrijving van regel

De MSTest-brongenerator inventariseert testklassen met behulp van ForAttributeWithMetadataName, die geen overname volgen. Een klasse die [TestClass] van een basistype erft, wordt stilzwijgend overgeslagen door broncodegegenereerde detectie en is niet uitvoerbaar wanneer de broncodegegenereerde provider de actieve reflectie-back-end is.

[TestClass]
public class BaseTests
{
}

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

Hoe schendingen op te lossen

Pas [TestClass] rechtstreeks toe op de afgeleide klasse, zodat deze wordt gevonden wanneer door bron gegenereerde detectie actief is.

[TestClass]
public class BaseTests
{
}

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

Wanneer waarschuwingen onderdrukken

Onderdrukt geen waarschuwingen van deze regel wanneer brongeneratie is ingeschakeld, omdat de betreffende testklasse niet wordt gedetecteerd of uitgevoerd. U kunt deze onderdrukken als de klasse niet echt bedoeld is om een testklasse te zijn.

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

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

Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.