Araçlar

Mevcut xUnit.Net testlerini Bobcat'e taşımak

Critter Stack'in spesifikasyon aracı Bobcat, Marten'ın en kırılgan test suite'i olan DaemonTests projesine uygulandı: yüzlerce test, tek bir test gövdesi değiştirilmeden Given/When/Then adımları olarak raporlanıyor. Adımlar testlerin zaten çağırdığı helper'lardaki attribute'lardan, marker yorumlarından ve projekte edilen Shouldly assertion'larından geliyor.

Yayın tarihi
Okuma süresi
22 dk okuma
agent çalıştırması #22
agent çalıştırması #22
Orijinale git jeremydmiller.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Marten'ın DaemonTests projesi (393 test) test gövdeleri değiştirilmeden altı feature altında 30 spesifikasyon render ediyor; Bobcat 1.0.0 ve WolverineFx.Bobcat 6.55.0 kullanılıyor.
  • [Given], [When], [Then], [Check] ve anahtar kelimesiz [Step] aynı StepAttribute'un farklı keyword'leri; placeholder'lar her çağrı noktasındaki parametrelere isimle bağlanıyor.
  • Helper'ın olmadığı yerde Given, When, Then, And veya But ile başlayan // yorumu adım bildiriyor; dekore bir kod çalışmadıysa adım recorded değil declared işaretleniyor.
  • <BobcatProjectAssertions>true</BobcatProjectAssertions> statement seviyesindeki Shouldly çağrılarını Then adımına çeviriyor ve serideki tüm assertion'ları test patlamadan değerlendiriyor.
  • Ortak context üzerindeki protected helper'lar internal'a çevrilmek zorunda, çünkü üretilen interceptor'lar extension method; Bobcat bunu BOBCAT039 ile bildiriyor.
  • Katılım sınıf bazında: catch_up_timeout_diagnostics, kayıtlı bir spesifikasyonun göstereceği hatayı beklediği için düz xUnit testi olarak kalıyor.

Critter Stack ekosisteminin test aracı Bobcat, Marten'ın async daemon testlerini barındıran DaemonTests projesine uyarlandı; bu suite uzun zamandır repodaki en güvenilmez test kaynağıydı. Test gövdelerinin hiçbiri değişmedi: Bobcat.Generators build sırasında dekore edilmiş her helper çağrısı için C# interceptor üretiyor, böylece ortak DaemonContext helper'ları üzerindeki [Given]/[When]/[Then] attribute'ları mevcut çağrıları kaydedilmiş adımlara dönüştürüyor. Adım cümlesindeki placeholder'lar parametrelere isimle bağlanıyor, Type argümanı ise kısa tip adıyla görünüyor.

Helper'ın bulunmadığı yerlerde Given, When, Then, And veya But ile başlayan // yorumları adım bildiriyor; o bölgede dekore bir kod çalışmadıysa adım süre almadan "declared" olarak işaretleniyor. <BobcatProjectAssertions>true</BobcatProjectAssertions> açıldığında statement seviyesindeki Shouldly çağrıları Then adımına dönüşüyor ve bir serideki tüm assertion'lar test patlamadan önce çalıştırılıyor. İki maliyet var: interceptor'lar extension method olmak zorunda olduğu için protected helper'lar internal'a çevrilmeli ve Bobcat.Xunit xunit.v3 4.x istiyor.

Gerçek dünyada kullanımı

  • Arka planda daemon veya projection runner ayağa kaldıran yüzlerce testlik eski bir entegrasyon suite'ini, tek tek sınıf bazında ve yeniden yazmadan Bobcat'e geçirmek.
  • Uzun bir hazırlıktan sonra birden fazla shard veya projection durumunu kontrol eden bir testte, tüm assertion hatalarını tek koşuda toplayarak tekrarlanan red/green döngülerinden kurtulmak.
  • Hangi bekleme veya rebuild adımının sessizce kırılganlaştığını göstermek için CI raporunda adım bazlı süreler görmek.
  • Hata davranışını bilinçli olarak doğrulayan ve kayıtlı spesifikasyona dönüşmemesi gereken sınıfları düz xUnit testi olarak bırakmak.

Neden önemli

Bobcat katılımın kademeli olabileceğini gösteriyor: mevcut bir suite'te helper metotları dekore etmek ve marker yorumları eklemek okunabilir, süreli adım raporları veriyor; projekte assertion'lar da ilk hatada durmak yerine tüm hataları tek döngüde ortaya çıkarıyor.

Bu özet, Jeremy D. Miller (The Shade Tree Developer) üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü