MSTest-gebruiksregels

Gebruiksregels ondersteunen het juiste gebruik van MSTest-kenmerken, -methoden en -patronen. Deze regels vangen veelvoorkomende fouten op en zorgen ervoor dat uw tests voldoen aan de vereisten en conventies van het framework.

Regels in deze categorie

Regel-id Title Severity Oplossing beschikbaar
MSTEST0002 Testklasse moet geldig zijn. Waarschuwing Yes
MSTEST0003 De testmethode moet geldig zijn. Waarschuwing → fout* Yes
MSTEST0005 TestContext moet geldig zijn. Waarschuwing Yes
MSTEST0007 Gebruik het kenmerk voor de testmethode. Waarschuwing Nee.
MSTEST0008 TestInitialize moet geldig zijn. Waarschuwing Yes
MSTEST0009 TestCleanup moet geldig zijn. Waarschuwing Yes
MSTEST0010 ClassInitialize moet geldig zijn. Waarschuwing Yes
MSTEST0011 ClassCleanup moet geldig zijn. Waarschuwing Yes
MSTEST0012 AssemblyInitialize moet geldig zijn. Waarschuwing Yes
MSTEST0013 AssemblyCleanup moet geldig zijn. Waarschuwing Yes
MSTEST0014 DataRow moet geldig zijn. Waarschuwing Yes
MSTEST0017 Assertie-argumenten moeten in de juiste volgorde worden meegegeven. Informatie Yes
MSTEST0018 DynamicData moet geldig zijn. Waarschuwing Yes
MSTEST0023 Maak de boolean-assertie niet onwaar. Informatie Yes
MSTEST0024 Sla statische TestContext niet op. Waarschuwing Nee.
MSTEST0026 Assertie args moet voorwaardelijke toegang voorkomen. Informatie Nee.
MSTEST0030 Het type dat een testmethode bevat, moet een testklasse zijn. Waarschuwing Yes
MSTEST0031 Gebruik System.ComponentModel.DescriptionAttribute niet. Informatie Yes
MSTEST0032 Beoordeel altijd waarheidsvoorwaarde van assertie. Informatie Nee.
MSTEST0034 Gebruik ClassCleanupBehavior.EndOfClass. Informatie Yes
MSTEST0035 Gebruik DeploymentItem met testmethode of testklasse. Informatie Nee.
MSTEST0037 Gebruik de juiste assertiemethoden. Informatie Yes
MSTEST0038 Vermijd Assert.AreSame met waardetypen. Informatie Yes
MSTEST0039 Gebruik nieuwere Assert.Throws-methoden. Informatie Yes
MSTEST0040 Vermijd het gebruik van asserts in een async void-context. Waarschuwing Nee.
MSTEST0041 Gebruik kenmerken op basis van voorwaarden met testklasse. Waarschuwing Yes
MSTEST0042 DataRow dupliceren. Waarschuwing Nee.
MSTEST0043 Gebruik het kenmerk voor opnieuw proberen bij de testmethode. Waarschuwing → fout* Yes
MSTEST0046 Gebruik Assert in plaats van StringAssert. Informatie Yes
MSTEST0048 Het gebruik van de eigenschap TestContext. Waarschuwing Nee.
MSTEST0049 Flow TestContext CancellationToken. Informatie Yes
MSTEST0050 De globale testinrichting moet geldig zijn. Waarschuwing Yes
MSTEST0051 Assert.Throws moet één instructie bevatten. Informatie Yes
MSTEST0052 Vermijd expliciet DynamicDataSourceType. Informatie Yes
MSTEST0053 Vermijd het gebruik van assert-formatparameters. Informatie Yes
MSTEST0054 Gebruik de eigenschap CancellationToken. Informatie Yes
MSTEST0055 Negeer de retourwaarde van tekenreeksmethode niet. Waarschuwing Nee.
MSTEST0056 TestMethodAttribute moet DisplayName correct instellen. Informatie Yes
MSTEST0057 TestMethodAttribute moet broninformatie doorgeven. Waarschuwing Nee.
MSTEST0058 Vermijd asserties in catch-blokken. Informatie Nee.
MSTEST0059 Gebruik het kenmerk Parallelliseren correct. Waarschuwing Nee.
MSTEST0060 Dubbele TestMethodAttribute. Waarschuwing Yes
MSTEST0061 Gebruik het kenmerk OSCondition in plaats van runtimecontrole. Informatie Yes
MSTEST0062 Vermijd testmethodeparameters voor out/ref. Waarschuwing Yes
MSTEST0063 Testklasse moet een geldige constructor hebben. Waarschuwing Nee.
MSTEST0064 Geef de voorkeur aan asynchrone assertiemethoden. Informatie Nee.
MSTEST0065 Vermijd Assert.AreEqual bij verzamelingstypen. Waarschuwing Nee.
MSTEST0067 Vermijd synchrone blokkering van aanroepen in testcode. Info (standaard uitgeschakeld) Nee.
MSTEST0068 Gebruik Assert in plaats van CollectionAssert. Informatie Yes
MSTEST0069 Overgenomen [TestClass] wordt genegeerd door de MSTest-brongenerator. Waarschuwing Nee.
MSTEST0070 [MemberCondition] argumenten moeten geldig zijn. Waarschuwing Nee.
MSTEST0071 Testmethode mag geen weergavenaam opgeven die gelijk is aan de naam. Informatie Yes
MSTEST0072 [AssemblyFixtureProvider] wordt niet ondersteund bij ahead-of-time-compilatie. Waarschuwing Nee.
MSTEST0073 Geef de voorkeur aan een constante voor de [ResourceLock] resourcesleutel. Informatie Nee.
MSTEST0074 Tests die de procesglobale status wijzigen, moeten een resourcevergrendeling declareren. Informatie Yes
MSTEST0075 Vermijd het wijzigen van de huidige map in een geparallelliseerde test. Informatie Yes
MSTEST0076 Vermijd het wijzigen van de procesbrede cultuur in een geparalleliseerde test. Informatie Nee.
MSTEST0077 Vermijd geharde of gedeelde bestandssysteempaden in een geparallelliseerde test. Informatie Nee.
MSTEST0078 [DependsOn] argumenten moeten geldig zijn. Waarschuwing Nee.
MSTEST0079 Gebruik het kenmerk ArchitectureCondition in plaats van runtimecontroles. Informatie Yes
MSTEST0080 Gebruik het KENMERK CICondition in plaats van omgevingscontroles. Informatie Yes
MSTEST0081 [TestFilterProvider] moet verwijzen naar een geldig testfiltertype. Waarschuwing Nee.
MSTEST0082 Een testklasse neemt een levenscyclus of testmethode over van een andere MSTest-versie. Waarschuwing Nee.
MSTEST0083 Gebruik [ExecutableCondition] in plaats van File.Exists vóór Process.Start. Informatie Yes

* Geëscaleerd naar Fout in de Recommended- en All-modus.

Algemene scenario's

Validatie van teststructuur

Zorg ervoor dat uw testklassen, methoden en armaturen voldoen aan de MSTest-vereisten:

  • MSTEST0002: Test de indelingsvereisten voor klassen (bijvoorbeeld openbaar, niet-statisch).
  • MSTEST0003: Indelingsvereisten voor testmethode (⚠️ geëscaleerd naar Fout).
  • MSTEST0030: Methoden met [TestMethod] moeten zich in een [TestClass].
  • MSTEST0063: Klasseconstructorvalidatie testen.
  • MSTEST0069: Pas [TestClass] rechtstreeks toe, zodat met bron gegenereerde detectie de klasse wordt gevonden.
  • MSTEST0082: Houd basis- en afgeleide testklassen op dezelfde primaire MSTest-versie.

Levenscyclusmethoden

Initialisatie- en opschoonmethoden valideren:

  • MSTEST0008: TestInitialize-validatie.
  • MSTEST0009: TestCleanup-validatie.
  • MSTEST0010: ClassInitialize-validatie.
  • MSTEST0011: ClassCleanup-validatie.
  • MSTEST0012: AssemblyInitialize-validatie.
  • MSTEST0013: Validatie van AssemblyCleanup.
  • MSTEST0034: Stel ClassCleanupBehavior.EndOfClass in.
  • MSTEST0050: Validatie van globale testarmaturen.
  • MSTEST0072: Gebruik geen providers voor gedeelde assembly-armaturen met vooraf compilatie.
  • MSTEST0082: Overgenomen levenscyclusmethoden opnieuw compileren op basis van de MSTest-versie van het testproject.

Gegevensgestuurd testen

Zorg ervoor dat gegevenskenmerken correct worden gebruikt:

Betere asserties schrijven

Regels voor correct en effectief gebruik van asserties:

  • MSTEST0017: Geef de verwachte/werkelijke waarde door in de juiste volgorde.
  • MSTEST0023: Negate condities niet (gebruik direct Assert.IsFalse).
  • MSTEST0026: Vermijd het gebruik van null-conditionele operators in assertions.
  • MSTEST0032: Altijd waar-voorwaarden controleren.
  • MSTEST0037: gebruik de meest geschikte assertiemethode.
  • MSTEST0038: Gebruik AreSame niet met waardetypen.
  • MSTEST0039: Assert.ThrowsExactly (nieuwere API) gebruiken.
  • MSTEST0046: Geef de voorkeur aan Assert boven StringAssert.
  • MSTEST0051: Assert.Throws moet één instructie testen.
  • MSTEST0053: gebruik tekenreeksinterpolatie in plaats van notatieparameters.
  • MSTEST0058: Plaats geen beweringen in catch blocks.
  • MSTEST0064: Geef de voorkeur aan asynchrone assertiemethoden voor het blokkeren van asynchrone code.
  • MSTEST0065: Vermijd Assert.AreEqual bij verzamelingstypen.
  • MSTEST0068: Liever Assert dan CollectionAssert.

TestContext-gebruik

Het juiste gebruik van het TestContext-object:

  • MSTEST0005: Validatie van de eigenschap TestContext.
  • MSTEST0024: Sla TestContext niet op in statische velden.
  • MSTEST0048: Beperkte toegang tot eigenschappen in testomgevingen.
  • MSTEST0049: Stroomannuleringstokens van TestContext.
  • MSTEST0054: De eigenschap TestContext.CancellationToken gebruiken.

Asynchrone patronen

Regels voor asynchrone testcode:

  • MSTEST0040: Vermijd asserties in asynchrone void-methoden.
  • MSTEST0067: Vermijd Thread.Sleep, Task.Waiten andere synchroon blokkerende aanroepen in testcode (opt-in).

Parallelle testveiligheid

Regels voor tests die parallel worden uitgevoerd:

  • MSTEST0073: Gebruik gedeelde constanten voor resourcevergrendelingssleutels.
  • MSTEST0074: Vergrendel mutaties van de globale processtatus.
  • MSTEST0075: Huidige mapwijzigingen vergrendelen.
  • MSTEST0076: Vermijd procesbrede cultuurmutaties.
  • MSTEST0077: Vermijd gedeelde bestandssysteempaden.

Testconfiguratie

  • MSTEST0031: Gebruik de juiste kenmerken (niet System.ComponentModel.Description).
  • MSTEST0035: DeploymentItem-gebruik.
  • MSTEST0041: Voorwaardekenmerken moeten zich in testklassen bevinden.
  • MSTEST0043: kenmerken voor opnieuw proberen moeten zijn op testmethoden (⚠... geëscaleerd naar fout).
  • MSTEST0055: Negeer de retourwaarden van de stringmethoden niet.
  • MSTEST0056: Stel de DisplayName correct in voor TestMethodAttribute.
  • MSTEST0057: Brongegevens doorgeven in aangepaste TestMethodAttribute.
  • MSTEST0059: gebruik niet zowel Parallelize als DoNotParallelize.
  • MSTEST0060: Vermijd dubbele TestMethodAttribute.
  • MSTEST0061: Het kenmerk OSCondition gebruiken voor platformcontroles.
  • MSTEST0070: [MemberCondition] argumenten moeten verwijzen naar geldige leden.
  • MSTEST0071: Stel geen weergavenaam in die gelijk is aan de naam van de testmethode.
  • MSTEST0078: Doelen en afhankelijkheidsgrafieken valideren [DependsOn] .
  • MSTEST0079: Gebruik ArchitectureCondition in plaats van runtimearchitectuurcontroles.
  • MSTEST0080: gebruik CICondition in plaats van omgevingscontroles.
  • MSTEST0081: Registraties van testfilterproviders valideren.
  • MSTEST0082: Overgenomen tests en levenscyclusmethoden detecteren die zijn gecompileerd op basis van een andere primaire MSTest-versie.
  • MSTEST0083: Gebruik ExecutableCondition in plaats van een imperatieve uitvoerbare controle.