2016-06-27 2 views
0

У меня есть следующий класс:испытания равенства двух объектов на тестировании

public class OrderRule { 
    public OrderDirection Direction { get; } 
    public String Property { get; } 
} 

Я создал тест блока, используя XUnit следующим образом:

public void TryParse_ParseAscendingOrderRule() { 

    OrderRule expect = new OrderRule("name", OrderDirection.Ascending); 

    OrderRule result = factory.GetOrderRule("type1"); 

    Assert.Equal(result, expect); 

} 

Я знаю, что ожидать, и результат имеет одинаковое направление и Значения свойств, но я по-прежнему получаю False в своем тесте ... Я полагаю, это потому, что они не совпадают с экземпляром ...

Нужно ли мне действительно сравнить Direction and Property следующим образом?

Assert.True(result.Property == expect.Property && expect.Property == expect.Property); 

Это может стать очень долго, когда объекты имеют много свойств ...

Или есть лучший способ сделать это?

ответ

1

Если не нужно, чтобы OrderRule был классом, тогда создайте его как структуру, которая по умолчанию реализует равенство ценности. Существует также целый MSDN page о значении равенства, которое может вам помочь.

+0

В этом случае это должен быть класс ... –

+1

Затем просто перезапишите «Равно» и выполните сравнение один раз - ваши тесты xUnit останутся чистыми. Также есть хороший пример для ссылки на ссылочной странице MSDN – DAXaholic

Смежные вопросы