Assert.Throws
atılan istisnayı döndürür.
var ex = Assert.Throws<Exception>(() => user.MakeUserActive());
Assert.That(ex.Message, Is.EqualTo("Actual exception message"));
Dolayısıyla, herhangi bir istisna atılmazsa veya yanlış türde bir istisna atılırsa, ilk Assert.Throws
iddia başarısız olur. Ancak, doğru türde bir istisna atılırsa, şimdi değişkene kaydettiğiniz gerçek istisna hakkında iddia edebilirsiniz.
Bu kalıbı kullanarak, istisna mesajından başka şeyler üzerinde iddia edebilirsiniz, örneğin ArgumentException
ve türevlerde, parametre adının doğru olduğunu iddia edebilirsiniz:
var ex = Assert.Throws<ArgumentNullException>(() => foo.Bar(null));
Assert.That(ex.ParamName, Is.EqualTo("bar"));
Akıcı API'yı şu önerileri yapmak için de kullanabilirsiniz:
Assert.That(() => foo.Bar(null),
Throws.Exception
.TypeOf<ArgumentNullException>()
.With.Property("ParamName")
.EqualTo("bar"));
Veya alternatif olarak
Assert.That(
Assert.Throws<ArgumentNullException>(() =>
foo.Bar(null)
.ParamName,
Is.EqualTo("bar"));
İstisna mesajlar konusunda küçük bir ipucu SetCultureAttribute
, atılan mesajın beklenen kültürü kullandığından emin olmak için test yöntemini ile süslemektir . İstisna mesajlarınızı yerelleştirmeye izin verecek kaynaklar olarak saklarsanız bu devreye girer.