MSTest gizleme kuralları

Gizleme kuralları, MSTest testleri bağlamında geçerli olmayan diğer çözümleyicilerden (Roslyn veya Visual Studio iş parçacığı çözümleyicileri gibi) gelen tanılamaları otomatik olarak gizler.

Bu kategorideki kurallar

Kural Kimliği Başlık Bastırır
MSTEST0027 Test yöntemleri için async son ekini kaldır. VSTHRD200
MSTEST0028 Test fikstür yöntemleri için async sonekini bastır. VSTHRD200
MSTEST0033 Başlatılmayan null atanamayan başvuruları gizleme. CS8618
MSTEST0047 Fikstür metotlarının kullanılmayan TestContext parametresini yok sayın. IDE0060

Gizleme kuralları nasıl çalışır?

Bu kurallar kendi tanılamalarını oluşturmaz. Bunun yerine, test kodunda yanlış tetiklenebilen diğer çözümleyicilerin uyarılarını engeller.

VSTHRD200: Async yöntemler için Async son ekini kullanın

Gizlenen:MSTEST0027, MSTEST0028

Neden gizlensin: Visual Studio iş parçacığı çözümleyicisi (VSTHRD200), zaman uyumsuz yöntemlerin "Zaman uyumsuz" son ekine sahip olması gerektiğini önerir. Ancak test yöntemleri ve test fikstür yöntemleri MSTest tarafından adlandırma kuralları aracılığıyla değil öznitelikler aracılığıyla bulunur. Test yöntemi adlarına (örneğin, TestLoginAsync) "Async" sonekleri eklemek hiçbir değer sağlamaz ve test adlarının daha az okunabilir olmasını sağlayabilir.

Örnek:

[TestMethod]
public async Task TestLogin() // VSTHRD200 would warn without suppression
{
    await LoginAsync();
    // ...
}

CS8618: Null atanamaz başvuru başlatılmadı

Gizlenen:MSTEST0033

Neden gizlensin: Null atanabilir başvuru türleri kullanılırken, derleyici oluşturucularda başlatılmayan null atanamaz özellikler hakkında uyarır. Ancak MSTest, herhangi bir test yöntemi çalışmadan önce özelliği otomatik olarak başlatır TestContext , bu nedenle uyarı uygulanmaz.

Örnek:

[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: Kullanılmayan parametreyi kaldırma

Gizlenen:MSTEST0047

Neden gizlenmeli: MSTest, [AssemblyInitialize], [ClassInitialize], [GlobalTestInitialize] veya [GlobalTestCleanup] ile işaretlenen fikstür yöntemlerinde TestContext öğesini parametre olarak almanıza olanak tanır. MSTest, yöntem gövdesi bunu kullanmadığında bile bu parametreyi gerektirir, bu nedenle IDE0060 (kullanılmayan parametreleri işaretleyen) uygulanmaz.

Örnek:

[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
    }
}

Gizleme kurallarını devre dışı bırakma

Bu uyarıları görmeyi tercih ediyorsanız, içindeki .editorconfiggizleme kurallarını devre dışı bırakın:

[*.cs]
dotnet_diagnostic.MSTEST0027.severity = none
dotnet_diagnostic.MSTEST0028.severity = none
dotnet_diagnostic.MSTEST0033.severity = none
dotnet_diagnostic.MSTEST0047.severity = none