Assert
adalah kelas statis yang mewarisi dari System.Object, karena semua kelas dilakukan secara implisit dalam C #. System.Object mengimplementasikan metode berikut:
static bool Equals(object a, object b)
Metode Assert yang dimaksudkan untuk perbandingan kesetaraan adalah Assert.AreEqual()
metode. Oleh karena itu, memanggil Object.Equals()
metode melalui kelas Assert dalam unit test tentu saja merupakan kesalahan. Untuk mencegah kesalahan ini dan menghindari kebingungan, para pengembang NUnit sengaja menyembunyikan Object.Equals
di kelas Assert dengan implementasi yang melempar pengecualian. Inilah implementasinya:
/// <summary>
/// The Equals method throws an AssertionException. This is done
/// to make sure there is no mistake by calling this function.
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
[EditorBrowsable(EditorBrowsableState.Never)]
public static new bool Equals(object a, object b)
{
// TODO: This should probably be InvalidOperationException
throw new AssertionException("Assert.Equals should not be used for Assertions");
}
Tentu saja pesan pengecualian itu sendiri membingungkan, tetapi setidaknya itu memberi tahu Anda bahwa Anda telah melakukan sesuatu yang salah.