У меня есть модульный тест, который работает с Microsoft Excel , используя сборку взаимодействия от Microsoft. При выполнении модульного теста из Visual Studio все нормально и тест проходит. Когда я запускаю один и тот же тест на той же машине с использованием 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
Об установке Jenkins: На машине (с Windows 7), на которой я установил Jenkins, также установлена полная версия Visual Studio, используемая для сравнения, и, конечно, Microsoft Office Excel. Я ожидал неприятностей, связанных с тем, что при запуске с Jenkins тест не может должным образом взаимодействовать с рабочим столом, , как того требует Excel согласно Microsoft .
Я настроил службу Jenkins для тестирования следующими способами.
- Стандартный способ, как услуга
- Как служба, с поддержкой рабочего стола
- Как администратор (то же, что я вошел в систему при использовании Visual Studio)
Ни один из этих 3 вариантов не работал.
РЕДАКТИРОВАТЬ: По malenkiy_scot, я узнал, что запуск его явно, как вошел в систему пользователя, это работает. Таким образом, вопрос теперь: В чем разница любого из вышеперечисленных вариантов с этим способом?
Кто-нибудь принёс это на работу? В чем разница между Visual Studio и Jenkins при выполнении этого теста?
Спасибо за подсказки!