【问题标题】:Why does Assert.IsInstanceOfType(0.GetType(), typeof(int)) fail?为什么 Assert.IsInstanceOfType(0.GetType(), typeof(int)) 失败?
【发布时间】:2009-03-26 16:37:13
【问题描述】:

我是单元测试的新手,使用Microsoft.VisualStudio.TestTools.UnitTesting;

0.GetType()实际上是System.RuntimeType,那么我需要写什么样的测试才能通过Assert.IsInstanceOfType(0.GetType(), typeof(int))?

---跟进,这是我自己的用户错误...Assert.IsInstanceOfType(0, typeof(int))

【问题讨论】:

  • 你想完成什么?断言常量是特定类型是没有意义的。如果这是为了示例而玩具代码,它还不够具体。
  • 这个样本是为了这个问题。在我的实际测试中,我正在做一些反思并获得一个 int 类型的属性,但测试失败......但是 Assert.IsTrue(0.GetType() == typeof(int)) 将通过
  • 我说这个问题可以删,没用
  • 虽然它现在可能对任何人都没有帮助,但它在未来可能会有所帮助。我一直很感激能在几年前的博客文章中找到有助于解决问题的提示/答案。
  • 我会说这个问题确实解决了我的问题,尽管它与 0.gettype() 无关,但是对于测试来说也是新手,那里的语法测试并不是最好的。干杯。

标签: c# unit-testing mstest


【解决方案1】:

将调用改为如下

Assert.IsInstanceOfType(0, typeof(int));

第一个参数是被测试的对象,而不是被测试对象的类型。通过传递 0.GetType(),您说的是“RunTimeType”是 System.int 的一个实例,它是错误的。在幕后,他们的电话只是解决

if (typeof(int).IsInstanceOfType(0))

【讨论】:

    【解决方案2】:

    应该是这样的

    Assert.IsInstanceOfType(0, typeof(int))
    

    您的表达式当前正在评估 RunTimeType 是否是 RunTimeType 的一个实例,但它不是。

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多