Исключения при выполнении модульных тестов против Excel в Team Build 2010 - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть класс-оболочка Excel, использующий Office PIA.У меня также есть ограниченный набор тестов, который был ранее написан для запуска на NUnit.Мы переходим на TFS2010 на работе, поэтому я также переношу тестовые оверлеи NUnit на MSTest.

Набор тестов отлично работает на моем компьютере разработчика, и если он выполняется вручную с помощью утилиты командной строки MSTest на машине, которая работаетагент по сборке.Однако при выполнении через Team Build все тесты, связанные с дисковым вводом-выводом (Open, Save и т. Д.), Не выполняются.Мой агент сборки работает с учетной записью домена, и эта учетная запись домена также является локальным администратором на том же компьютере.Несколько тестов, которые не выполняют дисковый ввод-вывод, работают нормально, поэтому я знаю, что Excel запускается и доступен.Просто похоже на проблему с разрешениями или ограничением процесса Team Build.

Итак, вот пример функции.Это то, что заставляет меня думать, что это проблема ввода-вывода в Excel.Проверка File.Exists проходит нормально.Я не получаю FileNotFoundException в моем тестовом прогоне, вместо этого я получаю COMException непосредственно из уровня взаимодействия.

public void OpenXLS(string workbookFilePath) 
{
   // Make sure given file path exists
   if (!File.Exists(workbookFilePath))
   {
      throw new FileNotFoundException(String.Format(CultureInfo.CurrentCulture,
         "File '{0}' cannot be found.", workbookFilePath));
   }

   // Open the Workbook
   _xlsWorkbook = _xlsWorkbooks.Open(workbookFilePath, 0, false, Missing.Value,
      "", Missing.Value, true, Missing.Value, Missing.Value, true, false,
      Missing.Value, Missing.Value, Missing.Value, Missing.Value);
}

Исключение:

System.Runtime.InteropServices.COMException: Microsoft Excel cannot access the file 
'C:\BuildPath\TestResults\TestRun\Out\TestBook.xls'. There are several possible reasons:

• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open 

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

У меня была похожая проблема, и это решение работало для меня: http://blogs.msdn.com/b/sqlserverfaq/archive/2010/04/30/unable-to-open-excel-files-using-a-cscript-in-sql-server-jobs.aspx

В папке «systemprofile», похоже, необходима папка «Рабочий стол».

  • Создайте папку «Рабочий стол» для Windows 2008 Server (x64) в папке C: \ Windows \ SysWOW64 \ config \ systemprofile

  • И для 32-разрядного Windows 2008 Server создайте «Папка «Рабочий стол» в папке C: \ Windows \ System32 \ config \ systemprofile

0 голосов
/ 13 августа 2012

Harlam357, ты сделал мой день!

Однако, похоже, что даже на 64-битной машине вам нужно создать папку «Рабочий стол» в C: \ Windows \ System32 \ config \ systemprofile . Я создал его в обоих каталогах, чтобы убедиться. И не забудьте предоставить полный доступ к учетной записи службы, возможно, это необходимо.

...