MSTEST0078: '[DependsOn]'-argumenten moeten geldig zijn

Property Waarde
Regel-ID MSTEST0078
Title [DependsOn]-argumenten moeten geldig zijn
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

Testafhankelijkheden zijn gepland voor MSTest 4.4 en zijn alleen beschikbaar in preview-versies totdat MSTest 4.4.0 is uitgebracht.

Oorzaak

Een [DependsOn] kenmerk verwijst naar een test op naam en de verwijzing heeft een probleem dat het testframework alleen tijdens runtime kan beslissen, zoals een doel dat niet bestaat.

Beschrijving van regel

Het testframework behandelt bewust een [DependsOn] doel dat overeenkomt met geen test als een niet-fatale waarschuwing tijdens runtime, zodat --filter de uitvoeringen van één test blijven werken. Dat betekent dat een typefout of een naamnaam op de achtergrond de gedeclareerde volgorde laat vallen in plaats van dat de build mislukt. Deze analyse rapporteert de problemen die tijdens de build kunnen worden besloten:

  • De methode waarnaar wordt verwezen, bestaat niet op het type waarnaar wordt verwezen.
  • Het lid waarnaar wordt verwezen, is geen testmethode, dus de afhankelijkheid wordt genegeerd.
  • Het type waarnaar wordt verwezen, is geen testklasse, dus de afhankelijkheid wordt genegeerd.
  • Het type waarnaar wordt verwezen, wordt gedeclareerd in een andere assembly (afhankelijkheden worden opgelost binnen één testbron).
  • Het type waarnaar wordt verwezen, is abstract, dus de tests worden uitgevoerd onder elke afgeleide testklasse.
  • Het kenmerk maakt een test afhankelijk van zichzelf, wat een afhankelijkheidscyclus is die mislukt tijdens runtime.
  • Het kenmerk neemt deel aan een afhankelijkheidscyclus die zichtbaar is in de compilatie, waardoor elke test in de cyclus tijdens runtime mislukt.
  • Het kenmerk wordt toegepast wanneer het geen effect heeft, omdat het kenmerkdoel geen testmethode is of geen test uitvoert.
[TestMethod]
public void CreateCart() { }

[TestMethod, DependsOn("CreatCart")] // Violation: typo, no such member
public void AddItem() { }

Hoe schendingen op te lossen

Corrigeer het typefout of de naam van de naam en gebruik nameof zodat de compiler de verwijzing synchroon houdt wanneer u de naam van het doel wijzigt.

[TestMethod]
public void CreateCart() { }

[TestMethod, DependsOn(nameof(CreateCart))]
public void AddItem() { }

Wanneer waarschuwingen onderdrukken

Onderdrukt geen waarschuwingen van deze regel. Elk geval dat door deze analyse wordt gerapporteerd, mislukt de afhankelijke test tijdens runtime, zoals een zelfverwijzing of een cyclus, of laat de gedeclareerde volgorde op de achtergrond vallen, zoals een typefout of een verwijzing naar een niet-testlid.

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

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

Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.

Zie ook