测试两个对象的测试相等性

Test equality of two objects on testing

我有以下 class:

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);

}

我知道 expect 和 result 具有相同的 Direction 和 属性 值,但我在测试中仍然得到 False ...我想这是因为它们不是同一个实例 ...

我真的需要如下比较方向和 属性 吗?

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

当对象有很多属性时,这可能会变得很长...

或者有更好的方法吗?

如果 OrderRule 没有必要成为 class 则将其设为默认实现值相等的结构。还有一个完整的 MSDN page 关于价值平等可能对你有帮助。