我有一個單元測試,可以使用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之間有什麼區別?
感謝提示!
當你明確運行Jenkins而不是服務時會發生什麼? – 2012-02-29 09:51:06
@malenkiy_scot,好點,我會嘗試! – Marcel 2012-02-29 09:55:23
@malenkiy_scot,它工作。但是,在正常的用戶帳戶下運行jenkins會讓人覺得有些不安。我擔心,這會在某種程度上使我受到傷害。 – Marcel 2012-02-29 11:24:46