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.
MSTest-analyseregels ('MSTESTxxxx') inspecteren uw C# of Visual Basic-code voor beveiliging, prestaties, ontwerp en andere problemen.
Aanbeveling
Wanneer u gebruikmaakt van Visual Studio, hebben veel analyseregels gekoppelde code-hervormingen die u kunt toepassen om het probleem op te lossen. Codecorrecties worden weergegeven in het pictogrammenu van de gloeilamp.
De regels zijn ingedeeld in categorieën zoals prestatiegebruik...
Vanaf MSTest.TestFramework 3.7 is het NUGet-pakket MSTest.Analyzers een afhankelijkheid van het framework. Voor eerdere versies moet u MSTest metapackage gebruiken of een pakketverwijzing voor MSTest.Analyzers expliciet toevoegen.
MSTestAnalyseModus
Vanaf MSTest 3.8 is een MSBuild-eigenschap met de naam MSTestAnalysisMode beschikbaar om te bepalen welke analysen zijn ingeschakeld op welke ernst.
Aanbeveling
Als u wilt zien welke regels zijn ingeschakeld op welke ernst voor elke modus, kunt u naar het pakket van de gewenste versie in De NuGet-cache navigeren, de globalconfigs map zoeken en het .globalconfig bestand openen dat overeenkomt met de analysemodus.
Voor meer informatie over het vinden van de NuGet-cachemap, zie De globale pakketten, cache en tijdelijke mappen beheren. Zoek vanuit die directory de map mstest.analyzers, vervolgens de versie (3.8 of hoger), en daarna globalconfigs.
U kunt ook het NuGet-pakket van de gewenste nuget.org versie downloaden en bekijken in NuGet Package Explorer (Windows-app) of rechtstreeks bekijken in de web-appversie van NuGet Package Explorer.
De beschikbare waarden voor deze eigenschap:
None
Met deze waarde worden alle analyses ingesteld op none ernst, waardoor ze allemaal worden uitgeschakeld. Vervolgens kunt u afzonderlijke analyses inschakelen met behulp van .editorconfig- of .globalconfig-bestanden.
Default
Deze instelling volgt het standaard gedocumenteerde gedrag voor elke regel.
- Voor regels die standaard zijn ingeschakeld, wordt de standaard ernst gebruikt.
- Regels die standaard zijn uitgeschakeld, hebben de ernstniveau
none.
Notitie
Regels die standaard zijn ingeschakeld als waarschuwingen zijn schendingen die naar verwachting tijdens runtime problemen veroorzaken.
Recommended
Dit is de modus die de meeste ontwikkelaars naar verwachting zullen gebruiken. Regels die standaard zijn ingeschakeld en de ernst 'info' (suggestion) hebben, worden geëscaleerd naar waarschuwingen. De volgende regels worden geëscaleerd naar fouten in beide Recommended en All modi's:
- MSTEST0003: Testmethoden moeten een geldige indeling hebben.
- MSTEST0043: Gebruik het retry-attribuut op testmethode.
All
Deze modus is agressiever dan Recommended. Alle regels worden ingeschakeld als waarschuwingen. Daarnaast worden de volgende regels geëscaleerd naar fouten:
- MSTEST0003: Testmethoden moeten een geldige indeling hebben.
- MSTEST0043: Gebruik het retry-attribuut op testmethode.
Notitie
De volgende regels zijn volledig optioneel en zijn niet ingeschakeld in de Default, Recommendedof All-modussen:
- MSTEST0015: Testmethode mag niet worden genegeerd
- MSTEST0019: Geef de voorkeur aan TestInitialize-methoden boven constructors
- MSTEST0020: Geef de voorkeur aan constructors (constructeurs) boven TestInitialize-methoden
- MSTEST0021: Geef de voorkeur aan Dispose boven TestCleanup-methoden
- MSTEST0022: Prefer TestCleanup boven Dispose-methoden
Regels per categorie
De analyseregels zijn ingedeeld in de volgende categorieën:
Ontwerpregels
Met ontwerpregels kunt u testsuites maken en onderhouden die voldoen aan de juiste ontwerp- en goede procedures.
Regels voor prestaties
Prestatieregels bieden ondersteuning voor high-performance testen.
Onderdrukkingsregels
Onderdrukkingsregels ondersteunen het onderdrukken van diagnostische gegevens van andere regels.
Gebruiksregels
Gebruiksregels ondersteunen het juiste gebruik van MSTest.
Regels op basis van concept
Regels zoeken die zijn ingedeeld op basis van veelvoorkomende testscenario's en concepten:
Structuur en kenmerken testen
Regels waarmee u ervoor kunt zorgen dat uw testklassen en -methoden goed zijn gestructureerd en ingericht:
- MSTEST0002 - Testklasse moet geldig zijn
- MSTEST0003 - Testmethode moet geldig zijn
- MSTEST0004 - Openbare typen moeten testklassen zijn
- MSTEST0007 - Kenmerk gebruiken voor testmethode
- MSTEST0016 - Testklasse moet een testmethode hebben
- MSTEST0029 - Openbare methode moet een testmethode zijn
- MSTEST0030 - Type met testmethode moet een testklasse zijn
- MSTEST0036 - Geen schaduw gebruiken
- MSTEST0041 - Kenmerken op basis van voorwaarden gebruiken met testklasse
- MSTEST0044 - Prefer TestMethod over DataTestMethod
- MSTEST0056 - TestMethodAttribute moet DisplayName correct instellen
- MSTEST0057 - TestMethodAttribute moet broninformatie doorgeven
- MSTEST0060 - Dubbele TestMethodAttribute
- MSTEST0063 - Testklasse moet een geldige constructor hebben
Verwante documentatie: Tests schrijven met MSTest, Kenmerken
Async/await-patronen
Regels voor het correct schrijven van asynchrone testcode:
- MSTEST0013 - AssemblyCleanup moet geldig zijn (inclusief asynchrone regels)
- MSTEST0027 - Asynchroon achtervoegsel onderdrukken voor testmethoden
- MSTEST0028 - Async-suffix onderdrukken voor testfixturemethoden
- MSTEST0039 - Nieuwere Assert.Throws-methoden (asynchrone varianten) gebruiken
- MSTEST0040 - Vermijd het gebruik van asserties in asynchrone void-context
- MSTEST0045 - Gebruik coöperatieve annulering voor time-out
- MSTEST0049 - Flow TestContext CancellationToken
- MSTEST0054 - Eigenschap CancellationToken gebruiken
Verwante documentatie: TestContext
Gegevensgestuurd testen
Regels voor het werken met gegevensgestuurde testscenario's:
- MSTEST0007 - Kenmerk gebruiken voor testmethode
- MSTEST0014 - DataRow moet geldig zijn
- MSTEST0018 - DynamicData moet geldig zijn
- MSTEST0042 - Duplicate DataRow
- MSTEST0052 - Expliciet DynamicDataSourceType vermijden
- MSTEST0062 - Testmethodeparameters voor out/ref vermijden
Gerelateerde documentatie: Kenmerken die worden gebruikt voor gegevensgestuurde tests
Levenscyclus en initialisatie
Regels voor het initialiseren, opschonen en levenscyclusbeheer van tests:
- MSTEST0008 - TestInitialize moet geldig zijn
- MSTEST0009 - TestCleanup moet geldig zijn
- MSTEST0010 - ClassInitialize moet geldig zijn
- MSTEST0011 - ClassCleanup moet geldig zijn
- MSTEST0012 - AssemblyInitialize moet geldig zijn
- MSTEST0013 - AssemblyCleanup moet geldig zijn
- MSTEST0019 - Gebruik "TestInitialize" in plaats van constructors
- MSTEST0020 - Verkies constructors boven TestInitialize
- MSTEST0021 - Geef de voorkeur aan Dispose boven TestCleanup
- MSTEST0022 - Geef de voorkeur aan TestCleanup boven Dispose
- MSTEST0034 - ClassCleanupBehavior.EndOfClass gebruiken
- MSTEST0050 - Globale testinrichting moet geldig zijn
Verwante documentatie: Levenscyclus
Assertions
Regels voor het correct en effectief gebruiken van assertiemethoden:
- MSTEST0006 - Kenmerk ExpectedException vermijden
- MSTEST0014 - DataRow moet geldig zijn
- MSTEST0017 - Assertie-argumenten moeten in de juiste volgorde worden doorgegeven
- MSTEST0023 - Maak de booleaanse assertie niet negatief
- MSTEST0025 - Geef de voorkeur aan Assert.Fail boven altijd-valse condities
- MSTEST0026 - Bewerings args moeten voorwaardelijke toegang voorkomen
- MSTEST0032 - Beoordeel assertie die altijd waar is
- MSTEST0037 : de juiste assertiemethoden gebruiken
- MSTEST0038 - Vermijd Assert.AreSame met waardetypen
- MSTEST0039 - Nieuwere Assert.Throws-methoden gebruiken
- MSTEST0046 - Assert gebruiken in plaats van StringAssert
- MSTEST0051 - Assert.Throws moet één instructie bevatten
- MSTEST0053 - Vermijd opmaakparameters voor Assert
- MSTEST0058 - Vermijd asserties in vangstblokken
Verwante documentatie: Asserties
TestContext
Regels voor het correct gebruiken van het TestContext-object:
- MSTEST0005 - TestContext moet geldig zijn
- MSTEST0024 - Statische TestContext niet opslaan
- MSTEST0033 : niet-null-verwijzing onderdrukken die niet is geïnitialiseerd
- MSTEST0048 - Gebruik van de eigenschap TestContext
- MSTEST0049 - Flow TestContext CancellationToken
- MSTEST0054 - Eigenschap CancellationToken gebruiken
Verwante documentatie: TestContext
Testconfiguratie
Regels voor het configureren van testuitvoering, parallelle uitvoering en andere testinstellingen:
- MSTEST0001 - Kenmerk Parallelliseren gebruiken
- MSTEST0015 - Testmethode mag niet worden genegeerd
- MSTEST0031 - System.ComponentModel.DescriptionAttribute niet gebruiken
- MSTEST0035 - DeploymentItem gebruiken met testmethode of testklasse
- MSTEST0043 - Kenmerk voor opnieuw proberen gebruiken bij testmethode
- MSTEST0045 - Gebruik coöperatieve annulering voor time-out
- MSTEST0055 - Retourwaarde tekenreeksmethode niet negeren
- MSTEST0059 : het kenmerk Parallelliseren juist gebruiken
- MSTEST0061 - OsCondition-kenmerk gebruiken in plaats van runtimecontrole
Verwante documentatie: MSTest configureren, Tests uitvoeren
Alle regels (snelverwijzing)
| Regel-id | Categorie | Title | Standaard ernst |
|---|---|---|---|
| MSTEST0001 | Performance | Gebruik het attribuut Parallelliseren | Informatie |
| MSTEST0002 | Usage | Testklasse moet geldig zijn | Waarschuwing |
| MSTEST0003 | Usage | Testmethode moet geldig zijn | Waarschuwing → fout* |
| MSTEST0004 | Design | Openbare typen moeten testklassen zijn | Informatie |
| MSTEST0005 | Usage | TestContext moet geldig zijn | Waarschuwing |
| MSTEST0006 | Design | Vermijd het kenmerk ExpectedException | Informatie |
| MSTEST0007 | Usage | Kenmerk gebruiken voor testmethode | Waarschuwing |
| MSTEST0008 | Usage | TestInitialize moet geldig zijn | Waarschuwing |
| MSTEST0009 | Usage | TestCleanup moet geldig zijn | Waarschuwing |
| MSTEST0010 | Usage | ClassInitialize moet geldig zijn | Waarschuwing |
| MSTEST0011 | Usage | ClassCleanup moet geldig zijn | Waarschuwing |
| MSTEST0012 | Usage | AssemblyInitialize moet geldig zijn | Waarschuwing |
| MSTEST0013 | Usage | AssemblyCleanup moet geldig zijn | Waarschuwing |
| MSTEST0014 | Usage | DataRow moet geldig zijn | Waarschuwing |
| MSTEST0015 | Design | Testmethode mag niet worden genegeerd | Geen (opt-in) |
| MSTEST0016 | Design | Testklasse moet een testmethode hebben | Informatie |
| MSTEST0017 | Usage | Assertieargumenten moeten in de juiste volgorde worden doorgegeven | Informatie |
| MSTEST0018 | Usage | DynamicData moet geldig zijn | Waarschuwing |
| MSTEST0019 | Design | Geef de voorkeur aan TestInitialize boven constructors | Geen (opt-in) |
| MSTEST0020 | Design | Geef de voorkeur aan constructors boven TestInitialize | Geen (opt-in) |
| MSTEST0021 | Design | Geef de voorkeur aan Dispose boven TestCleanup | Geen (opt-in) |
| MSTEST0022 | Design | Geef de voorkeur aan TestCleanup over Verwijdering | Geen (opt-in) |
| MSTEST0023 | Usage | Negateer geen Booleaanse assertie | Informatie |
| MSTEST0024 | Usage | Sla statische TestContext niet op | Waarschuwing |
| MSTEST0025 | Design | Prefer Assert.Fail over altijd-onjuiste condities | Informatie |
| MSTEST0026 | Usage | Assertie args moeten voorwaardelijke toegang voorkomen | Informatie |
| MSTEST0027 | Suppression | Asynchroon achtervoegsel onderdrukken voor testmethoden | N/A |
| MSTEST0028 | Suppression | Asynchroon achtervoegsel onderdrukken voor testinrichtingsmethoden | N/A |
| MSTEST0029 | Design | Openbare methode moet een testmethode zijn | Informatie |
| MSTEST0030 | Usage | Het type met de testmethode dient een testklasse te zijn | Waarschuwing |
| MSTEST0031 | Usage | System.ComponentModel.DescriptionAttribute niet gebruiken | Informatie |
| MSTEST0032 | Usage | Altijd waar-assertie controleren | Informatie |
| MSTEST0033 | Suppression | Niet-null-verwijzing onderdrukken die niet is geïnitialiseerd | N/A |
| MSTEST0034 | Usage | ClassCleanupBehavior.EndOfClass gebruiken | Informatie |
| MSTEST0035 | Usage | DeploymentItem gebruiken met testmethode of testklasse | Informatie |
| MSTEST0036 | Design | Geen schaduw gebruiken | Waarschuwing |
| MSTEST0037 | Usage | De juiste assertiemethoden gebruiken | Informatie |
| MSTEST0038 | Usage | Vermijd Assert.AreSame met waardetypen | Informatie |
| MSTEST0039 | Usage | Nieuwere Assert.Throws-methoden gebruiken | Informatie |
| MSTEST0040 | Usage | Vermijd het gebruik van asserts in een async void context | Waarschuwing |
| MSTEST0041 | Usage | Op voorwaarden gebaseerde kenmerken gebruiken met testklasse | Waarschuwing |
| MSTEST0042 | Usage | Dubbele GegevensRij | Waarschuwing |
| MSTEST0043 | Usage | Kenmerk voor opnieuw proberen gebruiken voor testmethode | Waarschuwing → fout* |
| MSTEST0044 | Design | Geef de voorkeur aan TestMethod boven DataTestMethod | Informatie |
| MSTEST0045 | Design | Gebruik coöperatieve annulering voor timeout | Informatie |
| MSTEST0046 | Usage | Assert gebruiken in plaats van StringAssert | Informatie |
| MSTEST0048 | Usage | Gebruik van eigenschap TestContext | Waarschuwing |
| MSTEST0049 | Usage | Flow TestContext Annuleringstoken | Informatie |
| MSTEST0050 | Usage | Globale testopstelling dient geldig te zijn | Waarschuwing |
| MSTEST0051 | Usage | Assert.Throws moet één instructie bevatten | Informatie |
| MSTEST0052 | Usage | Vermijd expliciet DynamicDataSourceType | Informatie |
| MSTEST0053 | Usage | Vermijd formatparameters voor Assert | Informatie |
| MSTEST0054 | Usage | De eigenschap CancellationToken gebruiken | Informatie |
| MSTEST0055 | Usage | Negeer de retourwaarde van de stringmethode niet | Waarschuwing |
| MSTEST0056 | Usage | TestMethodAttribute moet DisplayName correct instellen | Informatie |
| MSTEST0057 | Usage | TestMethodAttribute moet broninformatie doorgeven | Waarschuwing |
| MSTEST0058 | Usage | Vermijd asserties in vangstblokken | Informatie |
| MSTEST0059 | Usage | Het kenmerk Parallelliseren correct gebruiken | Waarschuwing |
| MSTEST0060 | Usage | Dubbele TestMethod-kenmerk | Waarschuwing |
| MSTEST0061 | Usage | OsCondition-kenmerk gebruiken in plaats van runtimecontrole | Informatie |
| MSTEST0062 | Usage | Testmethodeparameters voor out/ref vermijden | Waarschuwing |
| MSTEST0063 | Usage | Testklasse moet een geldige constructor hebben | Waarschuwing |
* Geëscaleerd naar Fout in de Recommended- en All-modus.
MSTESTEXP
Verschillende API's van MSTest zijn voorzien van de ExperimentalAttribute. Dit kenmerk geeft aan dat de API experimenteel is en kan worden verwijderd of gewijzigd in toekomstige versies van MSTest. Het kenmerk wordt gebruikt om API's te identificeren die nog niet stabiel zijn en mogelijk niet geschikt zijn voor productiegebruik.
De MSTESTEXP diagnostische waarschuwing geeft een melding van het gebruik van een experimentele API in uw code. Als u deze diagnose wilt onderdrukken met de SuppressMessageAttribute, voegt u de volgende code toe aan uw project:
using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("MSTESTEXP", "Justification")]
U kunt deze diagnose ook onderdrukken met preprocessorrichtlijn door de volgende code toe te voegen aan uw project:
#pragma warning disable MSTESTEXP
// API that is causing the warning.
#pragma warning restore MSTESTEXP