У меня есть класс-оболочка 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