2017-02-08 23 views
1

Для тестирования нашего настольного приложения мы используем TestComplete/TestExecute. У нас есть проект мастера, который запускается на машине управления. Этот мастер-проект не требует взаимодействия с Desktop, он не тестирует наше приложение.Запустить TestExecute от TeamCity

Этот проект запустит удаленный проект Slave (фактические тесты пользовательского интерфейса нашего приложения, требующие Desktop Interaction) на разных виртуальных машинах через TestExecute напрямую.

В настоящее время мы переводим процесс сборки в TeamCity. На этой машине управления у нас есть агент сборки от TeamCity. Агент сборки работает как служба с системной учетной записью (не локальной учетной записью системы).

Мы не используем локальную системную учетную запись (которая может взаимодействовать с рабочим столом), потому что нам нужна учетная запись домена для доступа к ресурсам домена. И мы не хотим запускать Агент как процесс, мы хотим сохранить его на службе.

Прямо сейчас, мы не можем запускать TestExecute непосредственно из TeamCity, потому что TestExecute требует интерактивного сеанса, а Учетная запись агента сборки не может взаимодействовать с Desktop. Мы попытались выполнить сценарий (выполненный из TeamCity), чтобы создать PSSession с обычным пользователем, имеющим доступ к Desktop и запустить TestExecute из этой PSSession. Но это тоже не работает.

Вот исключение, которое мы имели с обоих случаях (непосредственно и через PSSession):

Start-Process : This command cannot be run due to the error: This operation requires an interactive window station. 
At line:3 char:9 
+   Start-Process "D:\SmartBear\TestExecute 12\Bin\TestExecute.ex ... 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [Start-Process], InvalidOperationException 
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand 

Кто-нибудь есть решение начать тесты с TestExecute от TeamCity? Как я уже сказал, этот проект не должен взаимодействовать с рабочим столом, он начнет тестирование UI на разных виртуальных машинах через TestExecute напрямую.

Или возможно для учетной записи системы домена (например, той, которую мы используем) для взаимодействия с рабочим столом?

ответ

0

Внутри директории установки TestExecute, вы можете найти файл манифеста TCLauncher.exe.Manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <!-- Here is the relevant part --> 
     <requestedExecutionLevel level="asInvoker" uiAccess="true"> 
     </requestedExecutionLevel> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

Вы можете настроить UIAccess ложь.

Если вы не используете TCLauncher, но напрямую TestExecute.exe, есть также файл манифеста с тем же разделом <Security>, который вы можете настроить.

Вы также можете указать уровень от asInvoker до highestAvailable, но вам может быть предложено UAC.

+1

Благодарим вас за ответ! Это исправить мою проблему !! Это была проблема, я не отключил этот uiAccess в манифесте ... –

0

Самое простое, что вы можете сделать, это запустить мастер-проект из Team City, а главный проект вызовет тесты пользовательского интерфейса на подчиненных машинах. Поскольку мастер-проект не требует доступа к элементам пользовательского интерфейса, никаких проблем с ним не будет в рамках сеанса, отличного от UI.

 Смежные вопросы

  • Нет связанных вопросов^_^