MSTest kullanım kuralları

Kullanım kuralları MSTest özniteliklerinin, yöntemlerinin ve desenlerinin düzgün kullanımını destekler. Bu kurallar yaygın hataları yakalar ve testlerinizin çerçevenin gereksinimlerine ve kurallarına uydığından emin olur.

Bu kategorideki kurallar

Kural Kimliği Başlık Severity Düzeltme Mevcut
MSTEST0002 Test sınıfı doğrulanabilir olmalıdır. Uyarı Yes
MSTEST0003 Test yöntemi geçerli olmalıdır. Uyarı → Hata* Yes
MSTEST0005 TestContext geçerli olmalıdır. Uyarı Yes
MSTEST0007 Test yönteminde özniteliği kullanın. Uyarı Hayı
MSTEST0008 TestInitialize geçerli olmalıdır. Uyarı Yes
MSTEST0009 TestCleanup geçerli olmalıdır. Uyarı Yes
MSTEST0010 ClassInitialize geçerli olmalıdır. Uyarı Yes
MSTEST0011 ClassCleanup geçerli olmalıdır. Uyarı Yes
MSTEST0012 AssemblyInitialize geçerli olmalıdır. Uyarı Yes
MSTEST0013 AssemblyCleanup geçerli olmalıdır. Uyarı Yes
MSTEST0014 DataRow geçerli olmalıdır. Uyarı Yes
MSTEST0017 Doğrulama argümanları doğru sırayla geçirilmelidir. Bilgi Yes
MSTEST0018 DynamicData geçerli olmalıdır. Uyarı Yes
MSTEST0023 Boole ifadelerini negatiflemeyin. Bilgi Yes
MSTEST0024 Statik TestContext'i depolamayın. Uyarı Hayı
MSTEST0026 Doğrulama argümanları koşullu erişimden kaçınmalıdır. Bilgi Hayı
MSTEST0030 Test yöntemi içeren tür test sınıfı olmalıdır. Uyarı Yes
MSTEST0031 System.ComponentModel.DescriptionAttribute kullanmayın. Bilgi Yes
MSTEST0032 Her zaman doğru kesinleme koşulunu gözden geçirin. Bilgi Hayı
MSTEST0034 ClassCleanupBehavior.EndOfClass kullanın. Bilgi Yes
MSTEST0035 DeploymentItem'i test yöntemi veya test sınıfıyla kullanın. Bilgi Hayı
MSTEST0037 Uygun onay yöntemlerini kullanın. Bilgi Yes
MSTEST0038 Değer türleriyle Assert.AreSame'den kaçının. Bilgi Yes
MSTEST0039 Daha yeni Assert.Throws yöntemlerini kullanın. Bilgi Yes
MSTEST0040 Doğrulamalar void zaman uyumsuz bağlamda kullanmaktan kaçının. Uyarı Hayı
MSTEST0041 Test sınıfıyla koşul tabanlı öznitelikler kullanın. Uyarı Yes
MSTEST0042 Yinelenen DataRow. Uyarı Hayı
MSTEST0043 Test yönteminde retry özniteliğini kullanın. Uyarı → Hata* Yes
MSTEST0046 StringAssert yerine Assert kullanın. Bilgi Yes
MSTEST0048 TestContext özellik kullanımı. Uyarı Hayı
MSTEST0049 Flow TestContext İptal Belirteci. Bilgi Yes
MSTEST0050 Global test fikstürünün geçerli olması gerekir. Uyarı Yes
MSTEST0051 Assert.Throws tek bir deyim içermelidir. Bilgi Yes
MSTEST0052 Açık DynamicDataSourceType kullanmaktan kaçının. Bilgi Yes
MSTEST0053 Assert biçim parametrelerinden kaçının. Bilgi Yes
MSTEST0054 CancellationToken özelliğini kullanın. Bilgi Yes
MSTEST0055 Dize yöntemi geri dönüş değerini göz ardı etmeyin. Uyarı Hayı
MSTEST0056 TestMethodAttribute, DisplayName değerini doğru ayarlamalıdır. Bilgi Yes
MSTEST0057 TestMethodAttribute kaynak bilgilerini yaymalıdır. Uyarı Hayı
MSTEST0058 Catch bloklarında assert ifadelerinden kaçının. Bilgi Hayı
MSTEST0059 Parallelize özniteliğini doğru kullanın. Uyarı Hayı
MSTEST0060 Yinelenen TestMethodAttribute. Uyarı Yes
MSTEST0061 Çalışma zamanı denetimi yerine OSCondition özniteliğini kullanın. Bilgi Yes
MSTEST0062 Out/ref test yöntemi parametrelerinden kaçının. Uyarı Yes
MSTEST0063 Test sınıfı geçerli bir oluşturucuya sahip olmalıdır. Uyarı Hayı
MSTEST0064 Eşzamansız doğrulama yöntemlerini tercih edin. Bilgi Hayı
MSTEST0065 Koleksiyon türlerinde Assert.AreEqual kullanmaktan kaçının. Uyarı Hayı
MSTEST0067 Test kodundaki çağrıları zaman uyumlu bir şekilde engellemekten kaçının. Bilgi (varsayılan olarak devre dışı) Hayı
MSTEST0068 Assertyerine CollectionAssert kullanın. Bilgi Yes
MSTEST0069 Devralınan [TestClass] MSTest kaynak oluşturucusu tarafından yok sayılır. Uyarı Hayı
MSTEST0070 [MemberCondition] argümanlar geçerli olmalıdır. Uyarı Hayı
MSTEST0071 Test yöntemi, kendi adıyla aynı bir görünen ad belirtmemelidir. Bilgi Yes
MSTEST0072 [AssemblyFixtureProvider] önceden derleme ile desteklenmez. Uyarı Hayı
MSTEST0073 Kaynak anahtarı için sabiti [ResourceLock] tercih edin. Bilgi Hayı
MSTEST0074 İşlem genelindeki durumu değiştiren test bir kaynak kilidi bildirmelidir. Bilgi Yes
MSTEST0075 Paralelleştirilmiş testte geçerli dizini değiştirmekten kaçının. Bilgi Yes
MSTEST0076 Paralel yürütülen bir testte işlem genelindeki kültür ayarını değiştirmekten kaçının. Bilgi Hayı
MSTEST0077 Paralelleştirilmiş testte sabit kodlanmış veya paylaşılan dosya sistemi yollarından kaçının. Bilgi Hayı
MSTEST0078 [DependsOn] argümanlar geçerli olmalıdır. Uyarı Hayı
MSTEST0079 Çalışma zamanı denetimleri yerine ArchitectureCondition özniteliğini kullanın. Bilgi Yes
MSTEST0080 Ortam denetimleri yerine CICondition özniteliğini kullanın. Bilgi Yes
MSTEST0081 [TestFilterProvider] geçerli bir test filtresi türüne başvurmalıdır. Uyarı Hayı
MSTEST0082 Test sınıfı, bir yaşam döngüsünü veya test yöntemini farklı bir MSTest sürümünden devralır. Uyarı Hayı
MSTEST0083 [ExecutableCondition] öncesinde, File.Exists denetimleri yerine Process.Start kullanın. Bilgi Yes

* Recommended ve All modlarında hataya yükseltildi.

Yaygın senaryolar

Test yapısı doğrulaması

Test sınıflarınızın, yöntemlerinizin ve fikstürlerinizin MSTest gereksinimlerini karşıladığından emin olun:

  • MSTEST0002: Sınıf düzeni gereksinimlerini (örneğin, genel, statik olmayan) test edin.
  • MSTEST0003: Test yönteminin yapısı için gereksinimler (️⚠ Hata seviyesine yükseltildi).
  • MSTEST0030: [TestMethod] içeren yöntemler [TestClass] içinde olmalıdır.
  • MSTEST0063: Sınıf oluşturucu doğrulamayı test edin.
  • MSTEST0069: Kaynak tarafından oluşturulan bulmanın sınıfı bulması için doğrudan [TestClass] uygulayın.
  • MSTEST0082: Temel ve türetilmiş test sınıflarını aynı MSTest ana sürümünde tutun.

Yaşam döngüsü yöntemleri

Başlatma ve temizleme yöntemlerini doğrulayın:

  • MSTEST0008: TestInitialize doğrulaması.
  • MSTEST0009: TestCleanup doğrulaması.
  • MSTEST0010: ClassInitialize doğrulama.
  • MSTEST0011: ClassCleanup doğrulaması.
  • MSTEST0012: AssemblyInitialize doğrulama.
  • MSTEST0013: AssemblyCleanup doğrulaması.
  • MSTEST0034: ClassCleanupBehavior.EndOfClass değerini ayarlayın.
  • MSTEST0050: Genel test fikstür doğrulaması.
  • MSTEST0072: Önceden derleme ile paylaşılan montaj fikstür sağlayıcılarını kullanmayın.
  • MSTEST0082: Devralınan yaşam döngüsü yöntemlerini test projesinin MSTest sürümüyle yeniden derleyin.

Veri temelli test

Veri özniteliklerinin doğru kullanıldığından emin olun:

Daha iyi doğrulamalar yazma

Doğru ve etkili onay kullanımı için kurallar:

  • MSTEST0017: Beklenen/gerçek değerlerini doğru sırada geçirin.
  • MSTEST0023: Koşulları olumsuzlaştırmayın (Assert.IsFalse'ü doğrudan kullanın).
  • MSTEST0026: Onaylarda null koşullu işleçlerden kaçının.
  • MSTEST0032: Her zaman doğru koşulları gözden geçirin.
  • MSTEST0037: En uygun onay yöntemini kullanın.
  • MSTEST0038: AreSame'i değer türleriyle kullanmayın.
  • MSTEST0039: Assert.ThrowsExactly (daha yeni API) kullanın.
  • MSTEST0046: StringAssert yerine Assert'i tercih edin.
  • MSTEST0051: Assert.Throws bir tek deyimi test etmelidir.
  • MSTEST0053: Biçim parametreleri yerine dize ilişkilendirmesini kullanın.
  • MSTEST0058: Doğrulama ifadelerini catch bloklarına koymayın.
  • MSTEST0064: Eşzamansız kodu engellemek yerine eşzamansız doğrulama yöntemlerini tercih edin.
  • MSTEST0065: Koleksiyon türlerinde Assert.AreEqual kullanımından kaçının.
  • MSTEST0068: Assert yerine CollectionAssert tercih edin.

TestContext kullanımı

TestContext nesnesinin düzgün kullanımı:

  • MSTEST0005: TestContext özellik doğrulaması.
  • MSTEST0024: TestContext'i statik alanlarda depolamayın.
  • MSTEST0048: Fikstürlerde kısıtlanmış özellik erişimi.
  • MSTEST0049: TestContext'ten akış iptal belirteçleri.
  • MSTEST0054: TestContext.CancellationToken özelliğini kullanın.

Asenkron desenler

Zaman uyumsuz test kodu için kurallar:

  • MSTEST0040: Asenkron void yöntemlerinde doğrulamalardan kaçının.
  • MSTEST0067: Test kodunda Thread.Sleep, Task.Wait ve eşzamanlı olarak engelleyen diğer çağrılardan kaçının (isteğe bağlı).

Paralel test güvenliği

Paralel çalışan testler için kurallar:

  • MSTEST0073: Kaynak kilit anahtarları için paylaşılan sabitleri kullanın.
  • MSTEST0074: Mutasyonları küresel süreç durumuna kilitleyin.
  • MSTEST0075: Geçerli dizin değişikliklerini kilitleyin.
  • MSTEST0076: süreç genelinde kültür mutasyonlarından kaçının.
  • MSTEST0077: Paylaşılan dosya sistemi yollarından kaçının.

Test yapılandırması

  • MSTEST0031: Doğru öznitelikleri kullanın (System.ComponentModel.Description değil).
  • MSTEST0035: DeploymentItem kullanımı.
  • MSTEST0041: Koşul öznitelikleri test sınıflarında olmalıdır.
  • MSTEST0043: Yeniden deneme nitelikleri test yöntemlerinde olmalıdır (️⚠ Hataya yükseltildi).
  • MSTEST0055: Dize yöntemi geri dönüş değerlerini yoksaymayın.
  • MSTEST0056: TestMethodAttribute üzerinde DisplayName'i düzgün ayarlayın.
  • MSTEST0057: Özel TestMethodAttribute'ta kaynak bilgilerini yayma.
  • MSTEST0059: Hem Parallelize hem de DoNotParallelize kullanmayın.
  • MSTEST0060: Yinelenen TestMethodAttribute'u kullanmaktan kaçının.
  • MSTEST0061: Platform denetimleri için OSCondition özniteliğini kullanın.
  • MSTEST0070: [MemberCondition] argümanlar geçerli üyelere başvurmalıdır.
  • MSTEST0071: Test yöntemi adına eşit bir görünen ad ayarlamayın.
  • MSTEST0078: Hedefleri ve bağımlılık grafiklerini doğrulayın [DependsOn] .
  • MSTEST0079: Çalışma zamanı mimarisi denetimleri yerine kullanın ArchitectureCondition .
  • MSTEST0080: Ortam denetimleri yerine kullanın CICondition .
  • MSTEST0081: Test filtresi sağlayıcısı kayıtlarını doğrulayın.
  • MSTEST0082: Başka bir MSTest ana sürümünde derlenen devralınan testleri ve yaşam döngüsü yöntemlerini algılayın.
  • MSTEST0083: Kesinlik temelli yürütülebilir denetim yerine kullanın ExecutableCondition .