Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NUnit中的TypeOf和InstanceOf有什么区别?_C#_Nunit - Fatal编程技术网

C# NUnit中的TypeOf和InstanceOf有什么区别?

C# NUnit中的TypeOf和InstanceOf有什么区别?,c#,nunit,C#,Nunit,在NUnit中,是.TypeOf和是.InstanceOf之间的区别是什么 在下面的示例中,我注意到它们都返回true: public class Foo { public Boo GetBoo() { return new Boo(); } } public class Boo { } 以及NUnit试验方法: [Test] public void GetBoo_WhenCalled_ReturnBoo { var foo = new Foo

NUnit
中,
是.TypeOf
是.InstanceOf
之间的区别是什么

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

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

public class Boo { }
以及
NUnit
试验方法:

[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
}
[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")
}
[测试]
公共无效GetBoo\u调用时返回Boo
{
var foo=new foo();
var result=foo.GetBoo();
Assert.That(result,Is.TypeOf());//返回true
Assert.That(result,Is.InstanceOf());//返回true
}
这有点难以理解:

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

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>()); //return true
    Assert.That(result, Is.InstanceOf<Boo>()); //return true
}
[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")
}
[测试]
public void GetBoo_when called_ReturnBoo()
{
var foo=new foo();
var result=foo.GetBoo();
Assert.that(result,Is.TypeOf());//False(“Boo”)
Assert.that(result,Is.InstanceOf());//True(“Boo”或“Woo”)
}
TypeOf
将返回false,因为它只检查结果类型是否为
Boo

InstanceOf
将返回true,因为它会检查结果类型是否为
Boo
Woo

回答得很好,但您指向文档的链接是传统NUnit 2.4文档。你能更新吗?如果你知道地址是我的客人,我会尝试更新链接。新文档位于,如果不删除你写的很多内容,我就无法将其放入你的帖子中。