MSTest-användningsregler

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:

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.AreEqual på samlingstyper.
  • MSTEST0068: Föredrar Assert framför CollectionAssert.

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 ArchitectureCondition i stället för körningsarkitekturkontroller.
  • MSTEST0080: Använd CICondition i 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 ExecutableCondition i stället för en imperativ körbar kontroll.