2009-09-16 100 views
3

我继承它给了我一个弃用警告一些单元测试代码,因为它使用“Assertion.AssertEquals”:什么是Assertion.AssertEquals的“升级路径”?

警告CS0618:“NUnit.Framework.Assertion”已过时:“使用断言类,而不是”

但是,我不能在Assert类中看到显而易见的方法,而应该使用它?

AssertEquals需要两个对象和一条消息,如果发生故障,可以使用该消息报告错误。例如

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

什么是Assert类的等价方法?

回答

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"); 

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

+0

True ...如果您将您的意见合并为一个答案,我会将其标记为已接受 – 2009-09-16 13:22:43

4
Assert.That(a, Is.EqualTo(b), 
    "Enqueuing first item should set count to 1"); 
+0

是的,但忽略我ssage! – 2009-09-16 12:55:01

+0

'Assert.That(a,Is.EqualTo(b),“FAILURE”)' – 2009-09-16 13:00:22

5

如何:

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

做一个全面的正则表达式替换:

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

应改为:

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

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

应改为:

Assert.That(\2, \1)