Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Användningsregler stöder korrekt användning av MSTest-attribut, metoder och mönster. Dessa regler fångar vanliga misstag och ser till att dina tester följer ramverkets krav och konventioner.
Regler i den här kategorin
| Regel-ID | Titel | Severity | Korrigering tillgänglig |
|---|---|---|---|
| MSTEST0002 | Testklassen ska vara giltig. | Varning | Yes |
| MSTEST0003 | Testmetoden ska vara giltig. | Varning → Fel* | Yes |
| MSTEST0005 | TestContext ska vara giltigt. | Varning | Yes |
| MSTEST0007 | Använd attributet på testmetoden. | Varning | Nej |
| MSTEST0008 | TestInitialize ska vara giltigt. | Varning | Yes |
| MSTEST0009 | TestCleanup bör vara giltigt. | Varning | Yes |
| MSTEST0010 | ClassInitialize ska vara giltigt. | Varning | Yes |
| MSTEST0011 | ClassCleanup ska vara giltig. | Varning | Yes |
| MSTEST0012 | AssemblyInitialize ska vara giltigt. | Varning | Yes |
| MSTEST0013 | AssemblyCleanup bör vara giltigt. | Varning | Yes |
| MSTEST0014 | DataRow ska vara giltig. | Varning | Yes |
| MSTEST0017 | Assert-argumenten ska anges i rätt ordning. | Info | Yes |
| MSTEST0018 | DynamicData ska vara giltigt. | Varning | Yes |
| MSTEST0023 | Förneka inte boolesk försäkran. | Info | Yes |
| MSTEST0024 | Lagra inte statisk TestContext. | Varning | Nej |
| MSTEST0026 | Assertionsargs bör undvika villkorsstyrd åtkomst. | Info | Nej |
| MSTEST0030 | Typen som innehåller testmetoden ska vara en testklass. | Varning | Yes |
| MSTEST0031 | Använd inte System.ComponentModel.DescriptionAttribute. | Info | Yes |
| MSTEST0032 | Granska villkoret för always-true-kontroll. | Info | Nej |
| MSTEST0034 | Använd ClassCleanupBehavior.EndOfClass. | Info | Yes |
| MSTEST0035 | Använd DeploymentItem med testmetoden eller testklassen. | Info | Nej |
| MSTEST0037 | Använd rätt assertionsmetoder. | Info | Yes |
| MSTEST0038 | Undvik Assert.AreSame med värdetyper. | Info | Yes |
| MSTEST0039 | Använd nyare Assert.Throws-metoder. | Info | Yes |
| MSTEST0040 | Undvik att använda assertioner i en async void-kontext. | Varning | Nej |
| MSTEST0041 | Använd villkorsbaserade attribut med testklassen. | Varning | Yes |
| MSTEST0042 | Duplicera DataRow. | Varning | Nej |
| MSTEST0043 | Använd återförsöksattribut för testmetoden. | Varning → Fel* | Yes |
| MSTEST0046 | Använd Assert i stället för StringAssert. | Info | Yes |
| MSTEST0048 | TestContext-egenskapsanvändning. | Varning | Nej |
| MSTEST0049 | Flow TestContext CancellationToken. | Info | Yes |
| MSTEST0050 | Den globala testfixturen ska vara giltig. | Varning | Yes |
| MSTEST0051 | Assert.Throws bör innehålla en enda instruktion. | Info | Yes |
| MSTEST0052 | Undvik explicit DynamicDataSourceType. | Info | Yes |
| MSTEST0053 | Undvik parametrar för Assert-format. | Info | Yes |
| MSTEST0054 | Använd egenskapen CancellationToken. | Info | Yes |
| MSTEST0055 | Ignorera inte returvärdet för strängmetoden. | Varning | Nej |
| MSTEST0056 | TestMethodAttribute ska ställa in DisplayName korrekt. | Info | Yes |
| MSTEST0057 | TestMethodAttribute bör sprida källinformation. | Varning | Nej |
| MSTEST0058 | Undvik kontroller i fångstblock. | Info | Nej |
| MSTEST0059 | Använd attributet Parallelize korrekt. | Varning | Nej |
| MSTEST0060 | Dubblett av TestMethodAttribute. | Varning | Yes |
| MSTEST0061 | Använd OSCondition-attribut i stället för kontroll vid körningstid. | Info | Yes |
| MSTEST0062 | Undvik testmetodparametrar för ut/referens. | Varning | Yes |
| MSTEST0063 | Testklassen bör ha en giltig konstruktor. | Varning | Nej |
| MSTEST0064 | Föredra asynkrona assertionsmetoder. | Info | Nej |
| MSTEST0065 | Undvik Assert.AreEqual på samlingstyper. |
Varning | Nej |
| MSTEST0067 | Undvik synkront blockerande anrop i testkoden. | Information (inaktiverad som standard) | Nej |
| MSTEST0068 | Använd Assert i stället för CollectionAssert. |
Info | Yes |
| MSTEST0069 | Ärvd [TestClass] ignoreras av MSTest-källgeneratorn. |
Varning | Nej |
| MSTEST0070 |
[MemberCondition] argumenten ska vara giltiga. |
Varning | Nej |
| MSTEST0071 | Testmetoden bör inte ange ett visningsnamn som är lika med namnet. | Info | Yes |
| MSTEST0072 |
[AssemblyFixtureProvider] stöds inte med kompilering i förväg. |
Varning | Nej |
| MSTEST0073 | Föredrar en konstant för resursnyckeln [ResourceLock] . |
Info | Nej |
| MSTEST0074 | Tester som ändrar globalt tillstånd för processen ska deklarera ett resurslås. | Info | Yes |
| MSTEST0075 | Undvik att ändra den aktuella katalogen i ett parallelliserat test. | Info | Yes |
| MSTEST0076 | Undvik att mutera processomfattande kultur i ett parallelliserat test. | Info | Nej |
| MSTEST0077 | Undvik hårdkodade eller delade filsystemsökvägar i ett parallelliserat test. | Info | Nej |
| MSTEST0078 |
[DependsOn] argumenten ska vara giltiga. |
Varning | Nej |
| MSTEST0079 | Använd attributet ArchitectureCondition i stället för körningskontroller. | Info | Yes |
| MSTEST0080 | Använd CICondition-attribut i stället för miljökontroller. | Info | Yes |
| MSTEST0081 |
[TestFilterProvider] bör referera till en giltig testfiltertyp. |
Varning | Nej |
| MSTEST0082 | En testklass ärver en livscykel eller testmetod från en annan MSTest-version. | Varning | Nej |
| MSTEST0083 | Använd [ExecutableCondition] i stället för File.Exists kontroller före Process.Start. |
Info | Yes |
* Eskalerade till Fel i Recommended och All lägen.
Vanliga scenarier
Validering av teststruktur
Se till att dina testklasser, metoder och armaturer följer MSTest-kraven:
- MSTEST0002: Testa klasslayoutkrav (till exempel offentliga, icke-statiska).
- MSTEST0003: Krav på testmetodlayout (eskalerat till ett fel ⚠).
- MSTEST0030: Metoder med [TestMethod] måste finnas i [TestClass].
- MSTEST0063: Testklasskonstruktorvalidering.
- MSTEST0069: Använd [TestClass] direkt så att källgenererad identifiering hittar klassen.
- MSTEST0082: Behåll bas- och härledda testklasser på samma MSTest-huvudversion.
Livscykelmetoder
Verifiera initierings- och rensningsmetoder:
- MSTEST0008: TestInitiera validering.
- MSTEST0009: Testcleanup-validering.
- MSTEST0010: ClassInitialize-validering.
- MSTEST0011: ClassCleanup-validering.
- MSTEST0012: AssemblyInitialize-validering.
- MSTEST0013: Validering av AssemblyCleanup.
- MSTEST0034: Ange ClassCleanupBehavior.EndOfClass.
- MSTEST0050: Global validering av testfixtur.
- MSTEST0072: Använd inte leverantörer av delade sammansättningsfixturer med kompilering i förväg.
- MSTEST0082: Kompilera om ärvda livscykelmetoder mot testprojektets MSTest-version.
Datadriven testning
Kontrollera att dataattribut används korrekt:
- MSTEST0007: Dataattribut måste finnas på testmetoder.
- MSTEST0014: DataRow-validering.
- MSTEST0018: DynamicData-validering.
- MSTEST0042: Identifiera duplicerade DataRows.
- MSTEST0052: Använd AutoDetect för DynamicDataSourceType.
- MSTEST0062: Undvik out/ref-parametrar.
Skriva bättre försäkran
Regler för korrekt och effektiv användning av påståenden:
- MSTEST0017: Ange förväntat/faktiskt värde i rätt ordning.
- MSTEST0023: Förneka inte villkor (använd Assert.IsFalse direkt).
- MSTEST0026: Undvik null-villkorsstyrda operatorer i påståenden.
- MSTEST0032: Granska villkor som alltid är sanna.
- MSTEST0037: Använd den lämpligaste assertmetoden.
- MSTEST0038: Använd inte AreSame med värdetyper.
- MSTEST0039: Använd Assert.ThrowsExactly (nyare API).
- MSTEST0046: Föredrar Assert framför StringAssert.
- MSTEST0051: Assert.Throws bör testa en enda instruktion.
- MSTEST0053: Använd stränginterpolation i stället för formatparametrar.
- MSTEST0058: Placera inte försäkran i fångstblock.
- MSTEST0064: Föredrar asynkrona kontrollmetoder framför blockering av asynkron kod.
-
MSTEST0065: Undvik
Assert.AreEqualpå samlingstyper. -
MSTEST0068: Föredrar
AssertframförCollectionAssert.
TestContext-användning
Korrekt användning av TestContext-objektet:
- MSTEST0005: Validering av egenskapen TestContext.
- MSTEST0024: Lagra inte TestContext i statiska fält.
- MSTEST0048: Begränsad åtkomst till egenskaper i lösningar.
- MSTEST0049: Flödesavbokningstoken från TestContext.
- MSTEST0054: Använd egenskapen TestContext.CancellationToken.
Asynkrona mönster
Regler för asynkron testkod:
- MSTEST0040: Undvik assert-satser i asynkrona void-metoder.
-
MSTEST0067: Undvik
Thread.Sleep,Task.Waitoch andra synkront blockerande anrop i testkoden (anmäl dig).
Säkerhet vid parallellkörning av tester
Regler för tester som körs parallellt:
- MSTEST0073: Använd delade konstanter för resurslåsnycklar.
- MSTEST0074: Lås mutationer till process-globalt tillstånd.
- MSTEST0075: Lås ändringar i aktuell katalog.
- MSTEST0076: Undvik processomfattande kulturmutationer.
- MSTEST0077: Undvik delade filsystemsökvägar.
Testkonfiguration
- MSTEST0031: Använd rätt attribut (inte System.ComponentModel.Description).
- MSTEST0035: DeploymentItem-användning.
- MSTEST0041: Villkorsattribut måste finnas i testklasser.
- MSTEST0043: Återförsöksattribut måste finnas på testmetoder (️⚠ eskalerat till Fel).
- MSTEST0055: Ignorera inte strängmetodens returvärden.
- MSTEST0056: Ange DisplayName korrekt på TestMethodAttribute.
- MSTEST0057: Sprida källinformation i anpassad TestMethodAttribute.
- MSTEST0059: Använd inte både Parallelize och DoNotParallelize.
- MSTEST0060: Undvik dubbletter av TestMethodAttribute.
- MSTEST0061: Använd OSCondition-attributet för plattformskontroller.
-
MSTEST0070:
[MemberCondition]argument måste referera till giltiga medlemmar. - MSTEST0071: Ange inte ett visningsnamn som är lika med testmetodnamnet.
-
MSTEST0078: Verifiera
[DependsOn]mål och beroendediagram. -
MSTEST0079: Använd
ArchitectureConditioni stället för körningsarkitekturkontroller. -
MSTEST0080: Använd
CIConditioni stället för miljökontroller. - MSTEST0081: Verifiera registreringar av testfilterprovider.
- MSTEST0082: Identifiera ärvda tester och livscykelmetoder som sammanställts mot en annan MSTest-huvudversion.
-
MSTEST0083: Använd
ExecutableConditioni stället för en imperativ körbar kontroll.