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
}
}