代码之家  ›  专栏  ›  技术社区  ›  Paul Hollingsworth

assertion.assertequals的“升级路径”是什么?

  •  3
  • Paul Hollingsworth  · 技术社区  · 16 年前

    我继承了一些单元测试代码,因为它使用“assertion.assertequals”,所以它会给我一个拒绝警告:

    警告CS0618:“nunit.framework.assertion”已过时:“改用assert类”

    但是,我在断言类中看不到我应该使用的明显方法?

    AssertEquals接受两个对象和一条消息,如果出现故障,可以使用该消息来报告错误。例如

            Assertion.AssertEquals(
                 "Enqueuing first item should set count to 1",
                 1, pq.Count);
    

    assert类上的等价方法是什么?

    4 回复  |  直到 14 年前
        1
  •  8
  •   Community Mohan Dere    8 年前

    答案 Jon Skeet 提出了所谓的“经典”模型,而 John Gietzen's 答案是指“基于约束”的模型。两者都是正确的,并且都提供了传递失败消息的可能性。

    所以让我总结一下:

    “经典”模型

    Assert.AreEqual(1, pq.Count,
        "Enqueuing first item should set count to 1");
    

    “基于约束”模型

    Assert.That(
        pq.Count,
        Is.EqualTo(1),
        "Enqueuing first item should set count to 1");
    

    我更喜欢后者,因为它读起来更像一个句子。

        2
  •  5
  •   Jon Skeet    16 年前

    这个怎么样?

    Assert.AreEqual(1, pq.Count,
                    "Enqueuing first item should set count to 1");
    
        3
  •  4
  •   John Gietzen    16 年前
    Assert.That(a, Is.EqualTo(b),
        "Enqueuing first item should set count to 1");
    
        4
  •  0
  •   Erik A. Brandstadmoen    14 年前

    执行完整的regex替换:

    Assertion\.AssertEquals(\(.*\),\(.*\),\(.*\))
    

    应替换为:

    Assert.That(\2, \1, \0)
    

    Assertion.Assert(\(.*\),\(.*\))

    应替换为:

    Assert.That(\2, \1)