MSTest ile test yazma

Bu makalede, MSTest tarafından testlerinizi yazmanıza ve şekillendirmenize yardımcı olmak için kullanılan API'ler ve kurallar hakkında bilgi ediniyorsunuz.

Not

"Öznitelik" ile biten öznitelik adları kısa formu kullanabilir. TestClass ve TestClassAttribute eşdeğerdir. Parametresiz oluşturuculara sahip öznitelikler parantezleri atlayabilir.

Test yapısı

Her MSTest test sınıfının TestClass özniteliği olmalı ve her test yönteminin TestMethod özniteliği olmalıdır.

using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class CalculatorTests
{
    [TestMethod]
    public void Add_TwoNumbers_ReturnsSum()
    {
        // Arrange
        var calculator = new Calculator();

        // Act
        int result = calculator.Add(2, 3);

        // Assert
        Assert.AreEqual(5, result);
    }
}

TestClassAttribute

TestClassAttribute sınıfı, testleri ve isteğe bağlı olarak başlatma veya temizleme yöntemlerini içeren bir sınıfı işaretler. Test sınıfı davranışını özelleştirmek için bu özniteliği genişletebilirsiniz.

TestMethodAttribute

, TestMethodAttribute bir yöntemi çalıştırılacak bir test olarak işaretler. Test yöntemleri şu şekilde olmalıdır:

  • Örnek yöntemleri (statik değil)
  • Public
  • MSTest v3.3+ için void, Task veya ValueTask döndür
  • Veri temelli öznitelikler kullanmadığınız sürece parametresiz
[TestClass]
public class TestMethodExamples
{
    [TestMethod]
    public void SynchronousTest()
    {
        Assert.IsTrue(true);
    }

    [TestMethod]
    public async Task AsynchronousTest()
    {
        await Task.Delay(100);
        Assert.IsTrue(true);
    }
}

Uyarı

Test yöntemleri için kullanmayın async void . async Task veya async ValueTask kullanın.

DiscoverInternalsAttribute

DiscoverInternalsAttribute Derleme özniteliği, MSTest'in test sınıflarını ve yöntemlerini bulmasını internal sağlar. Varsayılan olarak, yalnızca public testler keşfedilir. Bu öznitelik özellikle iç türleri parametre olarak kullanan parametreli testleriniz olduğunda kullanışlıdır:

[assembly: DiscoverInternals]

internal record TestInput(int Value, string Description);

[TestClass]
public class CalculatorTests
{
    internal static IEnumerable<TestInput> TestData
    {
        get
        {
            yield return new TestInput(1, "one");
            yield return new TestInput(2, "two");
        }
    }

    [TestMethod]
    [DynamicData(nameof(TestData))]
    internal void Add_WithTestInput_ReturnsExpected(TestInput input)
    {
        var calculator = new Calculator();
        int result = calculator.Add(input.Value, 1);
        Assert.AreEqual(input.Value + 1, result);
    }
}

olmadan DiscoverInternals, test yöntemi ve iç TestInput parametre türü test çalıştırıcısı tarafından bulunamaz.

Temel kavramlar

MSTest belgeleri konuya göre düzenlenmiştir:

Konu Description
Doğrulamalar Assert sınıflarıyla beklenen sonuçları doğrulama
Veri temelli test Testleri birden çok girişle çalıştırma (DataRow, CombinatorialData, DynamicData)
Test yaşam döngüsü Derleme, sınıf ve test düzeylerinde kurulum ve temizleme
Yürütme denetimi İş parçacığı oluşturma, paralelleştirme, zaman aşımları, yeniden denemeler ve koşullu yürütme
Test kuruluşu Kategoriler, öncelikler, sahipler ve meta veriler
TestContext Test çalışma zamanı bilgilerine erişme
Dağıtım öğeleri Test derlemelerinin yanı sıra dosya ve klasörleri kopyalama

Öznitelikler hızlı rehberi

Kategori Özellikler Bkz:
Test tanımlaması TestClass, TestMethod, DiscoverInternals Bu sayfa
Veri temelli DataRow, CombinatorialData, CombinatorialValues, , CombinatorialRange, CombinatorialRandomData, DynamicData, TestDataRow Veri temelli test
Lifecycle AssemblyInitialize, ClassInitialize, TestInitialize ve temizleme karşılıkları Test yaşam döngüsü
İplilik STATestClass, STATestMethod, UITestMethod Yürütme denetimi
Paralelleştirme Parallelize, DoNotParallelize Yürütme denetimi
Zaman Aşımı/Yeniden Deneme Timeout, Retry Yürütme denetimi
Conditional Ignore, OSCondition, CICondition Yürütme denetimi
Meta veriler TestCategory, TestProperty, Owner, Priority Test kuruluşu
İş izleme WorkItem, GitHubWorkItem Test kuruluşu
Kaynakları test et DeploymentItem Dağıtım öğeleri

Onaylamalar

Belirli işlevleri doğrulamak için ad alanının Microsoft.VisualStudio.TestTools.UnitTesting Assert sınıflarını kullanın. Test yöntemi uygulamanızda kod uygular, ancak yalnızca Assert deyimlerini eklediğinizde doğruluğu bildirir.

MSTest onayları şunlara ayrılır:

Özel üyeleri test etme

Yansıma sarmalayıcı sınıflarını kullanarak özel üyeleri test edebilirsiniz:

Tavsiye

Özel yöntemlerin doğrudan test gerekip gerekmediğini göz önünde bulundurun. Genellikle, genel arabirimler aracılığıyla test, daha iyi kapsam ve daha sürdürülebilir testler sağlar.

Ayrıca bakınız