2011-10-21 46 views
1

我剛開始使用大量現有代碼開始工作,並且測試未通過。我更像是一個Nunit傢伙,所以我不會立即熟悉Xunit的失敗點。xunit assert.equal錯誤?

的問題是代碼排序的,看起來像這樣:

fooStringProperty = readSomeFile; 
//later 
fooStringProperty.ShouldBe(expectedContents) 

上面的代碼失敗,看起來像這樣的錯誤:

error : Position: First difference is at position 0 
Expected: contentsOfFooStringProperty  
Actual: 
contentsOfFooStringProperty 

基本上,它以某種方式得到這個新行中那裏,我不知道如何。我在代碼庫中有很多這樣的失敗,並且它適用於其他人,所以我想知道它是否是一些xunit版本問題?

編輯:這是完全在Mac和Windows之間的CRLF問題。問題已解決:)

+1

更可能是您的代碼中存在錯誤。有時間擺脫ol調試器,看看發生了什麼。這是非常不可能的。 – jason

+0

您是否遇到平臺差異? (\ r \ n與\ n行結尾?)這是什麼運行時版本/操作系統? – sehe

+1

** [請勿損壞](http://pragprog.com/the-pragmatic-programmer/extracts/tips)**(尤其當您的用戶名稱接近** [Occam Razor ](http://en.wikipedia.org/wiki/Occam's_razor)**,Oren Mazor :)) – sehe

回答

0

xUnit似乎不太可能注入換行符。看起來更有可能你真的得到流氓換行符,因爲一些完全的其他原因。

我建議你通過調試代碼並檢查調試器中的值來診斷。在斷言行上設置一個斷點,看看它是否適合你。假設它真的是在那一點上被打破了,那麼在你提取/讀取/計算每個值的地方放一個斷點。基本上應用正常的步驟來處理意外的行爲 - 忽略xUnit方面。

+0

這也是我的正常假設,除非這段代碼在其餘時間內工作得很好。只在我的機器上壞了...乾淨的新機器。 –

+0

@OrenMazor:這不會使xUnit的錯誤:)你能夠調試單元測試嗎?如果不是的話,你需要使用debug-via-logging,這更加痛苦。我相信它會變成環保的東西。 –

+0

我完全同意。幾乎可以保證100%的環保。我只想在這裏與我的調試並行,因爲我不知道許多xunit,並希望得到第二個意見。 –