2012-02-29 79 views
3

我有一個單元測試,可以使用Microsoft的互操作程序集與Microsoft Excel一起使用。從Visual Studio中執行單元測試時,一切正常並且測試通過。當我使用Jenkins在同一臺機器上運行相同的測試時,測試失敗。爲什麼我的單元測試是從Visual Studio 2010開始的,而不是與Jenkins一起工作的?

關於測試:基本上它只是創建一個新的Excel數據表,操縱它一下,然後將其保存到Excel文件。我知道interop和excel存在很多問題,但由於測試在Visual Studio中有效,這與Jenkins的差異有關。該測試被稱爲「Windows批處理命令」下面的代碼:

echo Executing Unit Tests... 
del /f/q results.trx 
call "%MSTEST%\mstest.exe" /testcontainer:"%WORKSPACE%\xxx.Test\bin\Debug\xxx.Test.dll" /testsettings:Local.Testsettings /resultsfile:results.trx 

的違規行爲;下面,將Excel工作簿文件(其中尚不存在):

excelWorkbook.SaveAs(destFilePath, Excel.XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

收到的例外是:

System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A03EC 

關於詹金斯安裝:本機(與Windows 7),關於這一點我已經安裝了Jenki ns也有完整的Visual Studio安裝,用於比較,當然還有Microsoft Office Excel。我預料到這個麻煩來自這樣一個事實,即當開始與詹金斯時,測試不能正確地與桌面互動,as required by Excel according to Microsoft。 我已經通過以下方式配置了Jenkins服務,以進行測試。

  • 的標準方法,如服務
  • 作爲服務,與桌面的交互允許
  • 作爲管理員用戶(相同我登錄使用Visual Studio時上)的這些3

無變種工作。 編輯:通過malenkiy_scot,我瞭解到,作爲登錄用戶明確開始它,它的作品。因此現在的問題是:這種方式的上述變體有什麼區別?

有沒有人把這個工作?執行此測試時,Visual Studio和Jenkins之間有什麼區別?

感謝提示!

+1

當你明確運行Jenkins而不是服務時會發生什麼? – 2012-02-29 09:51:06

+0

@malenkiy_scot,好點,我會嘗試! – Marcel 2012-02-29 09:55:23

+0

@malenkiy_scot,它工作。但是,在正常的用戶帳戶下運行jenkins會讓人覺得有些不安。我擔心,這會在某種程度上使我受到傷害。 – Marcel 2012-02-29 11:24:46

回答

1

正如我在評論中指出的那樣,您可以創建一個作爲常規用戶在前臺運行的從屬實例(即使在同一臺計算機上)。將不會在服務實例中運行的作業綁定到該從站。

+0

我會接受,因爲它肯定會有所幫助。然而,我目前使用的解決方案是,我使用交互式登錄用戶運行整個Jenkins。感覺不好,但工作。 – Marcel 2012-03-27 21:22:20

0

仔細檢查Jenkins用戶帳戶是否正在運行,能夠與桌面進行交互。 012e,運行services.msc,選擇你的Jenkins服務,調出屬性,切換到'登錄'選項卡,並驗證'允許服務與桌面交互'框被選中。

一般而言,如果在測試中的某些內容(即使不需要任何類型的輸入)運行時出現任何類型的對話框,您都會希望這樣做。

+0

嗨,彼得,謝謝你的提示,但我已經試過了。 (並在問題中說明) – Marcel 2012-03-27 21:20:46

相關問題