Saya telah menemukan bahwa ini tampaknya menjadi dua cara utama untuk menguji pengecualian:
Assert.Throws<Exception>(()=>MethodThatThrows());
[ExpectedException(typeof(Exception))]
Manakah dari ini yang terbaik? Apakah satu menawarkan keunggulan dibandingkan yang lain? Atau itu hanya masalah preferensi pribadi?
Assert.That(() => MethodThatThrows(), Throws.Exception)
ExpectedException
atribut tersebut, jadi untuk versi 3+ hanyaAssert.Throws
varian yang relevan.Jawaban:
Yang pertama memungkinkan Anda menguji lebih dari satu pengecualian, dengan beberapa panggilan:
Yang kedua hanya memungkinkan Anda untuk menguji satu pengecualian per fungsi tes.
sumber
Assert.Throws
.Perbedaan utama adalah:
ExpectedException()
Atribut membuat tes lulus jika pengecualian terjadi di setiap tempat dalam metode pengujianPenggunaan
Assert.Throws()
memungkinkan untuk menentukanexact
tempat kode di mana pengecualian diharapkan.NUnit 3.0 menjatuhkan dukungan resmi untuk
ExpectedException
semuanya.Jadi, saya pasti lebih suka menggunakan
Assert.Throws()
metode daripadaExpectedException()
atribut.sumber
Saya lebih suka assert.throws karena memungkinkan saya untuk memverifikasi dan menegaskan kondisi lain setelah pengecualian dilemparkan.
sumber
Anda juga dapat dengan kuat mengetik kesalahan yang Anda harapkan (seperti versi attrib yang lama).
sumber
Jika Anda menggunakan versi yang lebih lama ( <= 2.0 )
NUnit
maka Anda harus menggunakanExpectedException
.Jika Anda menggunakan versi 2.5 atau yang lebih baru maka Anda dapat menggunakan
Assert.Throw()
https://github.com/nunit/docs/wiki/Breaking-Changes
Bagaimana cara menggunakan: https://www.nunit.org/index.php?p=exceptionAsserts&r=2.5
sumber