2012-08-02 77 views
0

我正在通過SpecFlow,NUnit和Coypu(用於瀏覽器自動化,使用WatiN驅動程序)在項目上運行驗收測試。測試的運行通過powershell/psake腳本調用。通過Jenkins工作運行時,Coypu/SpecFlow驗收測試掛起

如果我在本地盒子上運行這些測試,它們運行良好。但是,我們有一個構建服務器,Jenkins作業將自動運行這些測試,並且在通過Jenkins作業運行時,它們不會執行 - 它們只是掛起。

在任務管理器中查看,我可以看到有兩個iexplore.exe實例在Jenkins作業運行時創建。然而,在某一點之後,它們只是掛起 - 不改變內存使用情況或CPU。

nunit-agent-x86.exenunit-console-x86.exe也在運行,但大部分都是掛起,只是nunit-agent-x86.exe在內存中上升非常緩慢。

如果我殺了一個iexplore.exe進程,事情就會繼續,但SpecFlow規範隨後都會失敗。

在殺死IEXPLORE.EXE點,下面的例外是在日誌中:

Unhandled Exception: System.Runtime.InteropServices.COMException: The remote procedure call failed. (Exception from HRESULT: 0x800706BE) 

如果我手動調用psake腳本登錄到服務器時,該功能運行正常。

這個問題開始出現,當我試圖使用基本DI爲BrowserSession如這裏的要點是:https://gist.github.com/2301407

此之前,我是通過一個NUnit的[SetupFixture]類的靜態屬性共享BrowserSession。事情大部分工作正常,除了一個涉及模式對話框不能正常工作的測試的小問題,但我不確定我是否正確地做了這件事,所以想要做技巧的要點

我是有些什麼導致掛起丟失。任何想法是什麼或提示追蹤它?

UPDATE:切換到Firefox作爲瀏覽器,和硒作爲驅動程序後,這個問題已經消失......

回答

0

我有一對夫婦的海狸鼠名單上的反應。我還沒有對它們進行測試,因爲目前Firefox的一切都很好,但是如果它們幫助其他人...

2012年8月2日星期四16:38:30 UTC + 1,Adiel寫道:

[...]我認爲,watin需要nunit運行在STA(單線程),這可能與您的問題有關。

換句話說,也許你已經通過靜態單例瀏覽器會話讓你的測試線程安全,但是現在通過specflow的IOC你可以獲得多個實例,這是由於nunit運行的方式。


上週四,2012年8月2日16點41分11秒UTC + 1,馬特·埃利斯寫道:

這聽起來像它的IE瀏覽器的保護模式的方式獲得。IE在不同的進程中運行不同的區域,例如Internet和Intranet (約:空白),並且IIRC WatiN不會 處理得很好。如果您可以在您的 服務器上禁用保護模式,則應該沒問題。

相關問題