Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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.