簡體   English   中英

Visual Studio 2015中的測試執行錯誤(2013年工作)

[英]Test execution error in Visual Studio 2015 (worked in 2013)

我們正在從Visual Studio 2013 Update 5升級到Visual Studio 2015 Update 1的過程中。

我們的解決方案有很多測試,我們使用NUnit 2.6.4以及用於NUnit 2.x的NUnit測試適配器。

在Visual Studio 2013中運行這些測試時,它們都運行良好。

但是,在Visual Studio 2015中運行時,先運行前200個奇數測試,然后執行停止。 然后,我可以選擇尚未運行的測試並成功執行這些測試。 我在VS2013和VS2015中都安裝了最新的ReSharper,它愉快地執行了所有測試。

自從黎明以來,我們就一直保留每個版本的測試覆蓋率詳細信息,並且從Visual Studio的測試運行器中可以看到我所覆蓋的塊數。 但是ReSharper向我們顯示了所涵蓋的語句數量。 值略有不同,但它們會使我們的圖表混亂。

當測試執行失敗時,它會創建一個轉儲文件(它還會創建一些XML文件,這些文件似乎只是顯示我已安裝的DLL)。 我可以打開它並對其進行“調試”,但是它只是向我顯示了一行失敗的代碼,並且調用堆棧僅顯示了“托管代碼”,這意味着我無法確定導致該問題的實際測試。

這在VS2013和在VS2015中運行的ReSharper中完美運行的事實表明“這不是我們的錯”,但是盡管我想這樣想,但這無濟於事。

有任何想法嗎?

謝謝

格里夫

找出問題所在。 我們的解決方案中有一個實現IDispose的類,而我們的單元測試之一沒有處理該類,只是允許它超出范圍。

因此,由於尚未處理Disposable對象,因此未抑制類的Finalizer。 因此,GC調用了終結器,該終結器又試圖訪問也超出范圍的另一個對象,從而導致使測試執行運行程序崩潰的異常。

有趣的是,運行NUnit 2.x的VS2015崩潰了,但是VS2013中的相同設置可以很好地應對。

順便說一句,調試DUMP文件時(見上文),我意識到調用堆棧是無關緊要的,我只需要在終結器中放入一些防御性代碼即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM