Есть ли способ показать прогресс одного TestMethod в Visual Studio 2008?
В рамках набора юнит-тестов у меня есть один TestMethod, который работает очень и очень долго - обычно это занимает от 30 до 60 минут. Я установил время ожидания с помощью атрибута [Timeout], никаких проблем нет. Но я бы хотел получить визуальное представление о ходе теста.
Я знаю, что в окне «Результаты теста» отображается визуальное обновление всех методов тестирования. То, что я хочу, это визуальное обновление прогресса одного метода. В приложении WinForms я бы выскочил элемент управления ProgressBar. В консольном приложении я бы поместил курсор и отобразил сообщение о состоянии. Но это юнит тест. Я могу написать в TestContext, но это окно невозможно просмотреть, пока тест не завершится.
РЕДАКТИРОВАТЬ : Я знаю, что есть способ сделать это; это всего лишь программное обеспечение, поэтому всегда есть способ. Но что такое простой, практичный способ?
Один из способов сделать это - создать приложение TestMethodProgressMonitor.exe, которое читает из именованного канала и обновляет индикатор выполнения на основе сообщений, поступающих через канал. TestMethod может выполнить ShellExec TestMethodProgressMonitor.exe, а затем записать в именованный канал. Когда закончите, возможно, есть известная команда выключения, которую TestMethod отправляет приложению TestMethodProgressMonitor.exe.
Другим вариантом является создание TestMethodProgressMonitor.exe в качестве COM-сервера, и TestMethod может использовать COM (DCOM) для обновления размещенного индикатора выполнения в приложении.
Другой вариант - использовать метод SendMessage () user32.dll для отправки сообщения WM_COPYDATA в приложение монитора. Иногда это делается для удаленного управления приложениями.
Это некоторые из возможностей. Прежде чем приступить к созданию одного из них, я хотел бы знать, есть ли более простой способ.