【问题标题】:Unit Test - How to verify if a class are equal to another?单元测试 - 如何验证一个类是否等于另一个?
【发布时间】:2014-05-07 08:39:58
【问题描述】:

我正在尝试使用单元测试验证一个类是否与另一个类相等。 我有一个像这样的课程:

public class Class1 : Interface
{
     public Interface returnAnInstanceOfInterface()
     {
        Interface interface = new Class2();
        return interface;
     }
}

我正在尝试测试:

[TestMethod()]
public void TestIfReturnAnInstanceOfInterface()
{
    Class1 class1 = new Class1();
    Interface expected = new Class2();
    Assert.AreEqual(expected, class1.returnAnInstanceOfInterface());
}

我的测试失败了,但测试结果显示:Assert.AreEqual failed. Expected:<Namespace.Class2>. Actual:<Namespace.Class2>. 我做错了什么?还有其他方法吗?

【问题讨论】:

  • "class are equal" - 你的意思是类型相同(如class1.GetType())或class1.Equals(expected) 或完全不同的东西?
  • 是的,我的意思是类型是一样的

标签: c# unit-testing


【解决方案1】:

如果要检查实例是否属于同一类,可以这样做。

Assert.AreEqual(expected.GetType(), class1.returnAnInstanceOfInterface().GetType());

如果是 MsTest 单元测试,也可以使用 IsInstanceOfType 静态方法。

[TestMethod()]
public void TestIfReturnAnInstanceOfInterface()
{
    Class1 class1 = new Class1();
    Assert.IsInstanceOfType(class1.returnAnInstanceOfInterface(),typeof(Class2));
}

【讨论】:

    【解决方案2】:

    使用 Assert.IsInstanceOfType 方法:

    [TestMethod()]
    public void TestIfReturnAnInstanceOfInterface()
    {
        Class1 class1 = new Class1();
    
        Assert.IsInstanceOfType(class1.returnAnInstanceOfInterface(), typeof(Class2));
    }
    

    或者只是断言类型相等

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多