2011-10-10 67 views
0
Assert.AreEqual(expected, actual, "The value returned for {0}'s Foo method should be 'Bar'.", 
      typeof(Calculator)); 

Assert.AreEqual(expected, actual, "The value returned for {0}'s Foo method should be 'Bar'.", 
      typeof(Calculator).Name); 

這兩行拋出:Assert.AreEqual(...)給了我一個System.FormatException

試驗方法MyTesting.FooTest拋出異常: System.FormatException:輸入字符串是不是在正確的格式。


System.Text.StringBuilder.AppendFormat(的IFormatProvider提供商, 字符串格式,對象[]參數)
System.String.Format(的IFormatProvider 提供商,字符串格式,對象[]參數)
MyTesting.FooTest()在 C:\ TFS \暫存\在MyLibrary \單元測試\ FooTest.cs:行195

奇怪的是,如果我的單元測試失敗,我只得到一個異常,當它通過時,我沒有得到這個例外。儘管如此,我並不期待有例外,但它應該由於斷言而失敗,而不是因爲單元測試本身引發異常。

+0

MSTest或log4net? –

+1

你可以發佈整個測試嗎?你確定這些線條拋出異常嗎? FormatException通常是Parse()格式不正確的問題。 –

+0

沒有repro。這行代碼在我的電腦上運行良好。 –

回答

1

進行測試以確保您的對象計算器在您的平等測試之前不爲空。

這種錯誤將在這種特殊情況下以字符串格式發生。

0

嘗試不使用格式化的字符串,看看它是否仍然失敗。我今天剛剛遇到同樣的問題,試圖對結構進行斷言,並且這樣做會阻止我的斷言拋出格式異常。它似乎有格式化字符串的問題。 (我正在使用ms測試)

Assert.AreEqual(expected, actual,"The value returned for " + typeof (Calculator) + "'s Foo method should be 'Bar'."); 
Assert.AreEqual(expected, actual, "The value returned for " + typeof(Calculator) + "'s Foo method should be 'Bar'."); 

我不喜歡構建像這樣的字符串,但它是唯一能讓我的測試正常運行的方式。

相關問題