代码之家  ›  专栏  ›  技术社区  ›  Shahar Shokrani

在NUnit中TypeOf和InstanceOf有什么区别?

  •  1
  • Shahar Shokrani  · 技术社区  · 7 年前

    NUnit ,两者有什么区别 Is.TypeOf Is.InstanceOf ?

    在下面的示例中,我注意到它们都返回true:

    public class Foo
    {
        public Boo GetBoo()
        {
            return new Boo();
        }
    }
    
    public class Boo { }
    

    以及 单元测试 试验方法:

    [Test]
    public void GetBoo_WhenCalled_ReturnBoo
    {
        var foo = new Foo();
        var result = foo.GetBoo();
    
        Assert.That(result, Is.TypeOf<Boo>()); //return true
        Assert.That(result, Is.InstanceOf<Boo>()); //return true
    }
    
    1 回复  |  直到 7 年前
        1
  •  7
  •   Silvermind    7 年前

    这个 documentation

    TypoOf -测试对象是否为精确类型。

    InstanceOf

    这意味着与 排版 , 也会测试是否含有维生素。

    所以,在下面的例子中:

    public class Foo
    {
        public Boo GetBoo()
        {
            return new Woo();
        }
    }
    
    public class Woo : Boo { }
    

    [Test]
    public void GetBoo_WhenCalled_ReturnBoo()
    {
        var foo = new Foo();
        var result = foo.GetBoo();
    
        Assert.that(result, Is.TypeOf<Boo>()); // False ("Boo") 
        Assert.that(result, Is.InstanceOf<Boo>()); //True ("Boo" or "Woo")
    }
    

    TypeOf Boo 只是。 实例 喝倒采 Woo