Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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,TaskveyaValueTaskdö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:
-
Assertclass: Genel amaçlı onaylar (AreEqual,IsTrue,ThrowsException) -
StringAssertclass: Dizeye özgü onaylar (Contains,Matches,StartsWith) -
CollectionAssertclass: Koleksiyon onayları (Contains,AllItemsAreUnique,AreEquivalent)
Özel üyeleri test etme
Yansıma sarmalayıcı sınıflarını kullanarak özel üyeleri test edebilirsiniz:
- PrivateObject: Özel örnek yöntemleri için
- PrivateType: Özel statik yöntemler için
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.