Bạn chắc chắn là chính xác. Tôi đã vật lộn với một số similar problem trước đó ngày hôm nay, cho đến khi tôi tìm thấy bài đăng của bạn và bây giờ chắc chắn, rằng NUnit IsEqualTo() không nhất thiết gọi các ghi đè Bằng được cung cấp.
Tôi nói một cách nhất quán, vì đôi khi có. Thực ra tôi có hai lớp. Cái thứ hai bắt nguồn từ cái đầu tiên. Khi tôi gọi Is.EqualTo() trên các phiên bản đầu tiên, NUnit gọi các giá trị Equals ghi đè, đối với các thể hiện của giá trị thứ hai thì không.
Trong khi điều đó rất đặc biệt, tôi không có thời gian để điều tra thêm về những gì đang diễn ra.
Những người có vấn đề tương tự hoặc giải pháp chắc chắn nên đăng về nó, vì đây là một điều rất khó chịu và thực sự đã cho tôi nghi ngờ tính hợp lệ của các bài kiểm tra của tôi.
Trong thời gian chờ đợi, tôi đã tạo lớp Khẳng định sau, gọi hàm ghi đè bằng cho chắc chắn (tôi đã chọn nó). Nó sử dụng NUnit để làm một Assert bình đẳng đơn giản thay vì Is.EqualTo() và phần nào khắc phục thực tế, rằng cách này NUnit không cung cấp các biểu diễn chuỗi của các đối tượng trong trường hợp kiểm tra thất bại.
Vì vậy, đây đó là:
using NUnit.Framework;
public static class Affirm
{
public static Affirmer That(object actual)
{
return new Affirmer(actual);
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
public class Affirmer
{
readonly object _actual;
public Affirmer(object actual)
{
_actual = actual;
}
public void IsEqualTo(object expected)
{
string failureMessage = string.Format("\nExpected: <{0}>\nBut was: <{1}>", _actual, expected);
Assert.That(_actual.Equals(expected), Is.True, failureMessage);
}
public void IsNotEqualTo(object expected)
{
string failureMessage = string.Format("\nDid not excpect: <{0}>\nBut was: <{1}>", _actual, expected);
Assert.That(_actual.Equals(expected), Is.False, failureMessage);
}
}
Sử dụng nó như thế này:
Affirm.That(actualObject).IsEqualTo(expectedObject);
và
Affirm.That(actualObject).IsNotEqualTo(expectedObject);
Hope this helps.
Nguồn
2009-10-26 20:02:32
Tôi có cùng một vấn đề. Bây giờ tôi đang sử dụng Assert.IsTrue (objectA.Equals (objectB)); –
Tôi có cùng một vấn đề và tôi đã xác định rằng nó hoạt động nếu các đối tượng tôi so sánh là * không * cùng một tham chiếu. tức là tạo ra 2 đối tượng với các tính chất khác nhau ngoài tính bình đẳng so với tính chất, sau đó Assert.Equals hoạt động ... Nếu nó cùng tham chiếu được so sánh (chắc chắn bằng nhau) thì nó thất bại! không phải là bằng nhau (NUnit 2.5) – PandaWood
Bạn đang tìm kiếm 'Assert.AreEqual (objA, objB); ' – DanielV