2009-09-16 103 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)