正确的方法来单元测试对象的类型

时间:2014-03-12 20:06:09

标签: c# .net vs-unit-testing-framework

使用Visual Studio单元测试框架,我正在考虑两个选项:

Assert.AreEqual(myObject.GetType(), typeof(MyObject));

Assert.IsInstanceOfType(myObject, typeof(MyObject));

这两个选项有区别吗?还有一个"正确"比另一个?

这样做的标准方法是什么?

4 个答案:

答案 0 :(得分:21)

如果类型不完全相同,第一个示例将失败,而第二个示例仅在myObject无法分配给定类型时才会失败,例如。

public class MySubObject : MyObject { ... }
var obj = new MySubObject();

Assert.AreEqual(obj.GetType(), typeof(MyObject));   //fails
Assert.IsInstanceOfType(obj, typeof(MyObject));     //passes

答案 1 :(得分:1)

看起来XUnit更好:

Assert.IsType<MyClass>(myObj);

答案 2 :(得分:0)

在我的情况下,它可以与下一行一起正常工作

Assert.IsAssignableFrom<TheClass>(result);

答案 3 :(得分:0)

在NUnit中

Assert.That(myObject, Is.TypeOf<MyObject>()) //Tests exact type

Assert.That(myObject, Is.InstanceOf<MyObject>()) //Tests type and subtype

最容易断言的原因是,命名为NUnit跟着:)