2015-10-14 46 views
9

我正在使用Resharper 9.2和NUnit 2.6.4和〜120單元測試。有時當我開始運行測試時,resharper會在隨機測試中停止並將其狀態設置爲Aborted並跳過其他測試。這是非常不方便的,因爲我手動運行了其餘的測試。 有什麼方法可以獲得墮胎的原因,一些resharper測試運行日誌或NUnit的東西來幫助解決我的問題?我如何得到Resharper中止測試的原因?

我還試圖用本地NUnit的亞軍,但它有時拋出異常,它不包含任何有用的信息(一些遠程異常通知沒什麼用處)

我試圖設置「運行長達1個集並行「和」對每個程序集使用單獨的AppDomain進行測試「,但它沒有幫助。

UPD

我已經在調試模式下轉載此,調試單元測試只是停機和輸出窗口,我發現:

The program '[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Program Trace' has exited with code 0 (0x0). 
The program '[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Managed (v4.0.30319)' has exited with code -1073741819 (0xc0000005) 'Access violation'. 

看來,問題是外部的不安全庫碼。

+1

嘗試調試本機代碼,或者只是添加日誌記錄。 –

回答

1

似乎resharper在這種情況下無關。我有訪問衝突錯誤,在這種情況下,測試程序進程將被關閉。 .net無法處理此錯誤,因爲它不在受管級別上。唯一的辦法是檢查輸出窗口如果錯誤消息是這樣的:「程序」[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe:託管(v4.0.30319)'已退出代碼-1073741819(0xc0000005)'訪問當你的測試無故中止時,「違反」。 如果您有權訪問本機代碼,則可以進行調試。

在我的情況下,問題是不適當地使用COM對象和Dispose()方法。我修好了,現在一切都安然無恙 - 沒有「沉默」的墮胎。

+0

經過幾個小時的搜索谷歌,這是我的解決方案。好樣的!我調試了這個測試,並在本地代碼中看到了一個FatalExecutionEngineError,它沒有堆棧跟蹤,因此Resharper缺少錯誤消息。現在我知道它是什麼,我可以修復它! –

1

我也遇到了Resharper決定一致中止測試的情況。它沒有召喚成無管理或任何異乎尋常的東西。

答案是,它已導致計算器例外無意中遞歸調用。當我決定「調試」而不是「運行」它時,這很明顯。

因此,我假設一般情況是「中止」測試是出現問題的症狀,但錯誤並未導致從代碼本身拋出異常,而是從CLR或其他東西中拋出異常。

+0

調試而不是運行是關鍵。這很簡單,我想踢自己。 –

相關問題