2013-08-01 4 views
2

Я пытаюсь запустить тесты пользовательского интерфейса (используя API автоматизации Windows) в приложении WPF на основе CI. Я связал свое решение с файлом .testsettings и связал свою тестовую DLL с процессом сборки. Кажется, все хорошо.Выполнение MSTest при запуске в командной строке

Когда я ставлю новую сборку, в журнале сборки TFS я могу увидеть аргументы командной строки, переданные MSTest (2010) на машине сборки, - кажется, что файл .testsettings загружен правильно и что правильный тестовый DLL передается в файл MSTest.exe.

Однако, кажется, что «застрял» после сообщения Executing tests - как при запуске сборки, так и при запуске ее непосредственно через машину сборки. Кроме того, я указал сценарий запуска для запуска перед тестами в файле .testsettings (он копирует двоичные файлы приложения локально, чтобы тест мог запустить приложение и запустить соответствующие тесты). Этот скрипт, похоже, не выполняется (каталог, в который файлы должны быть скопированы, пуст).

Кто-нибудь видел подобную проблему и знает, как с этим бороться?

+0

Что вы имеете в виду под «застрявшим»? Я полагаю, что «Выполнение тестов» - последний результат, который я вижу в журнале построения, и сборка не завершена, не так ли? Хм ... может быть, ваш тест пользовательского интерфейса ждет ввода пользователя (для получения учетных данных для доступа к сетевому или сетевому диску с сетью или что-то в этом роде? Если вам нужны права администратора для запуска сценария запуска, что же касается UAC на build machine – Elena

+1

Является ли это единственным набором тестов, которые зависают? Недавно я столкнулся с подобной проблемой после установки VS 2012 на машине сборки. Очевидно, VS 2010 необходимо было применить обновление для совместимости с VS 2012. Это подробно [здесь] (http://stackoverflow.com/questions/16337564/mstest-hangs-for-seemingly-no-reason). –

+0

Огромное вам спасибо! Если бы я мог сделать это, я бы подумал, что это так. я сумасшедший ... Я все испробовал: от компиляции тестов в .NET 4 и VS 2010 до ручной замены DLL на машине сборки. Мне еще не удалось установить SP1, но я над этим работаю. –

ответ

4

Как отметил Майк в комментариях, проблема была на самом деле ошибкой в ​​VS 2010, которая не позволяла запускать тесты через среду IDE 2010, если у вас установлен VS 2012 бок о бок. К сожалению, мне не удалось установить VS 2010 SP1 на машине сборки, но также можно решить проблему, добавив аргумент /noisolation в стандартный синтаксис командной строки (это запускает тесты через процесс MSTest, что как-то решает проблему).

Однако, поскольку вы не можете определить дополнительные аргументы, которые должны быть переданы MSTest через встроенную функцию автоматического тестирования TFS, я написал собственное приложение, которое запускается как запланированное задание, запускает тесты и отправляет электронное письмо, содержащее HTML-отчет (я использовал trx2html - обратите внимание, что если вы используете VS2012, вам понадобится версия бета-версии 0.7, так как в формате .trx произошли изменения со времен VS 2010).