2017-02-13 19 views
8

Bağlam buldum xunit github içindeXUnit açıklayıcı Assert mesajı nasıl uygulanır?

bu:

Biz şunlardır: Add Assert.Equal(expected, actual, message) overload #350cevaptan

Teklif (yani geliştirici aşağıya bakınız olmayan varolan aşırı sormak) kendini belgeleyen koda inanan; bu sizin iddialarınızı içerir.

Tamam, anladım (şimdiye xunit ekibi bunu reddeder). Ayrıca kendini belgeleyen kodlara da inanıyorum. Hala bu kullanım durumunu öğrenmek olamaz:

Numune

// Arrange 
// Create some external soap service client and its wrapper classes 

// Act 
// client.SomeMethod(); 

// Assert 
// Sorry, soap service's interface, behaviour and design is *given* 
// So I have to check if there is no Error, and 
// conveniently if there is, then I would like to see it in the assertion message 

Assert.Equal(0, client.ErrorMessage.Length); // Means no error 

// I would like to have the same result what would be the following *N*U*n*i*t* assert: 
// Assert.AreEqual(0, client.ErrorMessage.Length, client.ErrorMessage); // Means no error 

Soru hala böyle sahiptir xUnit bu durumda açıklayıcı assert mesaj uygulayabilir nasıl

aşırı yük?

+0

Sorun nedir açık değil. Neden sadece “Assert.AreEqual” (0, client.ErrorMessage.Length, client.ErrorMessage); – Kritner

+0

XUnit'te böyle bir aşırı yükleme yok. Bu bir NUnit çağrısı. Lütfen çok başlangıç ​​cümlesine bakın: bir geliştirici böyle bir aşırı yüklenmeyi ister ve XUnit ekibi, "Bizler kendi kendini belgeleyen bir kod olan inancımız vardır; bu, sizin iddialarınızı içerir" ifadesi nedeniyle reddeder. –

+0

@ g.pickardou, Neden önerileri kullanmıyorsunuz? linkte sağlanmıştır. Akıcı iddialar gibi ya da mesaj aşırı yüklemeleriyle bırakılmış olan “Assert.True veya Assert.False” i saran kendi iddiayı yaratın. Daha ileride bahsedildi. "Assert.True ve .False'ye mesajlar verebilirsiniz.Mesajlar olmadan yaşayamazsanız (ve farklı bir onaylama kullanmayı reddetmiyorsanız), her zaman geri dönebilirsiniz: Assert.True (sayı == 2, "Bu benim mesajım"); ' – Nkosi

cevap

6

Bağlantıda sağlanan önerileri kullanın. fluent assertions gibi ya da kendi mesaj aşırı yüklemeleriyle bırakılan Assert.True or Assert.False'u düzelten kendi iddiayı yaratın. Bu daha aşağı

Quote

Sen Assert.True ve .False mesajlar sağlayabilir bahsedilmişti. sadece mesajlar onsuz (ve farklı bir iddiayı kullanmayı reddediyorum) olamaz, her zaman geri düşebilir:

Assert.True(number == 2, "This is my message"); 

Quote:

gerçekten mesajınız var isterseniz Test projelerinize Fluent Assertions veya belki xbehave ekleyebilir ve sözdizimlerini kullanabilirsiniz. Fluent Assertions, varlığıyla karşılaşırsa xunit.net istisnalarını bile atar.

+0

Bu bir cevaptır, ancak ben hala bulamadığınız akıcı örnek bulamıyorum/almayın –

+0

Zaman aldı, ama sonunda anladım. (Benim almam ve anında çalışmam gereken zillions unit test framework ...) –

+0

Akıcı iddiaların alınması çok kolay. Çok kullanırım ve öğrenme eğrisi dik değildi. – Nkosi