我的團隊有一大堆由我們的TeamCity服務器自動運行的WatiN測試套件。我們最近將所有構建代理切換到64位,並且還將我們的WatiN測試切換爲在x64模式下使用NUnit。 Watin一直給我們很少的測試失敗,因爲Interop調用IE瀏覽器的失敗或其他原因,但這些一直都很少見。由於開關都爲64位,幾乎每一個我們的任何測試套件運行失敗,出現以下異常:WatiN間歇性故障
Test(s) failed. System.InvalidCastException : Specified cast is not valid.
at SHDocVw.IWebBrowser2.get_HWND()
at WatiN.Core.Native.InternetExplorer.IEBrowser.get_hWnd()
at WatiN.Core.DomContainer.StartDialogWatcher()
at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri, IDialogHandler logonDialogHandler, Boolean createInNewProcess)
...
我發現了一個related question其中華廷用戶看到了同樣的異常,但正是因爲她試圖多-threading。我們沒有做這樣的事情,事實上我們正在使用WatiN文檔建議的正確的線程狀態公寓。儘管有人評論說這可能是因爲x86與x64模式,但我注意到了這個問題。
如何避免此錯誤導致我的測試頻繁失敗?
如果它只是切換回32位模式的問題,我可以處理,但我想知道沒有更好的解決方案。謝謝。
UPDATE:
離開工作崗位爲使用64位NUnit的亞軍約5+的測試套件運行後,他們每次都失敗,除了與此相同的錯誤一次。我們將它們切換回32位,並且自此以後已經有10次以上的成功運行。我想現在的臨時修復是使用一個32位的NUnit跑步者,儘管我仍然在尋找這種情況發生的原因,或者一個可以讓我們切換回到64位的解決方案。