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.
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:
- MSTEST0007: Gegevenskenmerken moeten op testmethoden staan.
- MSTEST0014: DataRow-validatie.
- MSTEST0018: DynamicData-validatie.
- MSTEST0042: Dubbele DataRows detecteren.
- MSTEST0052: AutoDetectie gebruiken voor DynamicDataSourceType.
- MSTEST0062: Vermijd out-/ref-parameters.
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.AreEqualbij verzamelingstypen. -
MSTEST0068: Liever
AssertdanCollectionAssert.
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
ArchitectureConditionin plaats van runtimearchitectuurcontroles. -
MSTEST0080: gebruik
CIConditionin 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
ExecutableConditionin plaats van een imperatieve uitvoerbare controle.