Assert
C # 'da tüm sınıfların örtük olarak yaptığı gibi System.Object öğesinden miras alan statik bir sınıftır. System.Object aşağıdaki yöntemi uygular:
static bool Equals(object a, object b)
Eşitlik karşılaştırması için amaçlanan Assert üzerindeki Assert.AreEqual()
yöntemler yöntemlerdir. Bu nedenle, Object.Equals()
yöntemi bir birim testinde Assert sınıfı aracılığıyla çağırmak kesinlikle bir hatadır. Bu hatayı önlemek ve karışıklığı önlemek için, NUnit geliştiricileri, Object.Equals
bir istisna atan bir uygulama ile kasıtlı olarak Assert sınıfında gizlendi . İşte uygulama:
/// <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");
}
Elbette istisna mesajının kendisi kafa karıştırıcıdır, ancak en azından yanlış bir şey yaptığınızı bilmenizi sağlar .