NUnit плохо работает с Assert.AreEqual

м новичок в модульном тестировании и NUit в частности. Я'Я просто набираю несколько примеров из книги, которая относится к Java и JUnit. Но я'м, используя вместо этого C #.

Проблема в том, что яу нас есть класс с переопределенными методами, такими какEquals() а такжеGetHashCode(), но когда я пытаюсь сравнить два объекта этого класса сAssert.AreEqual() мой код не вызывается, поэтому я получаю исключение.

Assert.True(MyClass.Equals(MyClass2)) работает хорошо Но я нене хочу использовать эту конструкцию вместоAssert.AreEqual(), Где может быть проблема?

Вот класс:

public class Money
{
    public int amount;
    protected string currency;

    public Money(int amount, string currency)
    {
        this.amount = amount;
        this.currency = currency;
    }

    public new bool Equals(object obj)
    {
        if (obj == null)
            return false;

        Money money = (Money)obj;
        return (amount == money.amount)
                && (Currency().Equals(money.Currency()));
    }

    public new int GetHashCode()
    {
        return (string.Format("{0}{1}", amount, currency)).GetHashCode();
    }

    public static Money Dollar(int amount)
    {
        return new Money(amount, "USD");
    }
    public static Money Franc(int amount)
    {
        return new Money(amount, "CHF");
    }

    public Money Times(int multiplier)
    {
        return new Money(amount * multiplier, currency);
    }

    public string Currency()
    {
        return currency;
    }
}

И сам метод теста:

[TestFixture]
public class DollarTest
{
    [Test]
    public void TestMultiplication()
    {
        Money five = Money.Dollar(5);
        Assert.True(Money.Dollar(10).Equals(five.Times(2)));  // ok
        Assert.AreEqual(Money.Dollar(10), five.Times(2));     // fails
    }
}

Ответы на вопрос(4)

Ваш ответ на вопрос