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.
Undertryckningsregler förhindrar automatiskt diagnostik från andra analysverktyg (till exempel Roslyn- eller Visual Studio-trådanalysverktyg) som inte tillämpas i samband med MSTest-tester.
Regler i den här kategorin
| Regel-ID | Titel | Undertrycker |
|---|---|---|
| MSTEST0027 | Utelämna asynkront suffix för testmetoder. | VSTHRD200 |
| MSTEST0028 | Utelämna asynkront suffix för testfixturmetoder. | VSTHRD200 |
| MSTEST0033 | Undertryck icke-nullbar referens som inte initialiserats. | CS8618 |
| MSTEST0047 | Utelämna den oanvända TestContext-parametern för fixturmetoder. | IDE0060 |
Så här fungerar regler för undertryckning
Dessa regler producerar inte sin egen diagnostik. I stället undertrycker de varningar från andra analysverktyg som annars skulle utlösas felaktigt i testkoden.
VSTHRD200: Använda Async-suffix för asynkrona metoder
Undertryckt av: MSTEST0027, MSTEST0028
Varför ignorera: Visual Studio-trådanalysator (VSTHRD200) rekommenderar att asynkrona metoder ska ha ett suffix för "Async". Testmetoder och testfixturmetoder identifieras dock av MSTest via attribut, inte namngivningskonventioner. Att lägga till "Async"-suffix för att testa metodnamn (till exempel TestLoginAsync) ger inget värde och kan göra testnamnen mindre läsbara.
Exempel:
[TestMethod]
public async Task TestLogin() // VSTHRD200 would warn without suppression
{
await LoginAsync();
// ...
}
CS8618: Icke-nullbar referens initierades inte
Undertryckt av: MSTEST0033
Varför ignorera: När du använder nullbara referenstyper varnar kompilatorn om icke-nullbara egenskaper som inte initieras i konstruktorer. MSTest initierar TestContext dock egenskapen automatiskt innan några testmetoder körs, så varningen gäller inte.
Exempel:
[TestClass]
public class MyTests
{
public TestContext TestContext { get; set; } = null!; // CS8618 would warn without suppression
[TestMethod]
public void TestSomething()
{
// TestContext is guaranteed to be non-null here
TestContext.WriteLine("Test output");
}
}
IDE0060: Ta bort oanvänd parameter
Undertryckt av: MSTEST0047
Varför utelämna: MED MSTest kan du ta emot TestContext som en parameter för fixturmetoder som har markerats med [AssemblyInitialize], [ClassInitialize], [GlobalTestInitialize]eller [GlobalTestCleanup]. MSTest kräver den här parametern även när metodtexten inte använder den, så IDE0060 (som flaggar oanvända parametrar) gäller inte.
Exempel:
[TestClass]
public class MyTests
{
[ClassInitialize]
public static void ClassInitialize(TestContext context) // IDE0060 would warn without suppression
{
// context isn't used, but MSTest requires the parameter
}
}
Inaktivera regler för undertryckning
Om du föredrar att se dessa varningar, inaktivera undertryckningsreglerna i .editorconfig.
[*.cs]
dotnet_diagnostic.MSTEST0027.severity = none
dotnet_diagnostic.MSTEST0028.severity = none
dotnet_diagnostic.MSTEST0033.severity = none
dotnet_diagnostic.MSTEST0047.severity = none