2014-01-31 95 views
0

我有一個奇怪的問題與Visual Studio 2010旗艦版: 我的一個Nunit(2.6.2)測試用例在調試模式下失敗但通過運行模式,就好像我們在兩種情況下有完全不同的代碼路徑。Visual Studio 2010:Nunit測試用例在調試模式下失敗,但通過運行模式

這是一個已知的錯誤嗎?或者是否有一些選項與我失蹤?

請賜教! 非常感謝。

編輯 - 更多信息 我的應用程序向組織內的一組人員寫的一個dll提交了一些請求。該DLL做一些計算並將結果返回給我。在運行Nunit測試時,運行Nunit測試正常,但調試測試用例給我一個錯誤 - 一個異常是從內部拋出的。在測試用例中探索dll的行爲(例如,提交具有特定參數的請求,檢查dll的輸出)該DLL。

重要提示:運行/調試另一個測試用例可以獲得一致的結果。

所以,對於怪異的測試用例: 1,無論是DLL還是不錯的,和調試模式下的東西打破了DLL 2,或者,該dll有一個錯誤,這是由一些調試模式下觸發。

據我所知,在Visual Studio中運行和調試一段代碼的唯一區別在於,在調試時,一個pdb文件被加載,而在運行時卻不是。本質上,加載符號表以識別代碼執行。

然後,這個問題首先沒有意義 - 爲什麼加載符號表會影響dll的行爲? (要求任何人在沒有看到任何代碼的情況下給出解釋是不公平的,但是,因爲它是公司的代碼,所以我不能在這裏展示它,如果你在職業生涯中遇到過這樣的事情,請與我分享你的情況發生了什麼 - 讓我們希望我的問題有同樣的原因,這樣我才能真正知道出了什麼問題。謝謝)

+1

如果你能告訴我們一些你正在測試的東西以及測試失敗的樣子,那真的很有幫助。 –

+0

您是否使用了兩個不同的.dll或指向相同的確切文件?可能是不同版本的dll。另外,它是一個自定義的例外或Windows?嘗試解釋更多,如果你可以,可以給出一個想法。 – bland

回答

0

感謝您的迴應。 我已經確定了原因:這是由於驅動dll堅果的錯誤參數。我的錯。 它仍然沒有回答爲什麼調試時的行爲變得瘋狂但在運行測試用例的時候很好的問題。

不過,我想,因爲參數是錯誤的,所以我不能指責dll發瘋。無論如何,當我通過正確的參數時,一切都很順利。

非常感謝。

0

你可能已經運行到您正在做相同的代碼路徑的情況,但結果是在調試與非調試微妙的不同,由於優化。這裏有幾種不同的可能性:

  • 你的代碼有一個微妙的錯誤,例如,競賽條件
  • 您的測試過於具體,例如,浮動,你應該使用一個公差

這是一個痛苦不能夠調試,但我建議你加在整個方法和試驗記錄,所以你可以看到發生了什麼事情一點比較。 (並希望測井本身不會改變測試結果,這也是可能的......)

相關問題