Is there a way I can show the progress of a single TestMethod In Visual Studio 2008 ?
Within a set of unit tests, I have a single TestMethod that runs for a very, very long time - normally it will take between 30 and 60 minutes. I've set the Timeout using the [Timeout] attribute, no problem there. But I'd like to be able to get a visual indication of progress of the test.
I know the Test Results window gives a visual progress update of all the test methods. What I want is a visual progress update of a single method. In a WinForms app I would popup a ProgressBar control. In a console app, I would position the cursor and display a status message. But this is a unit test. I can write to the TestContext, but that window is not viewable until the test completes.
EDIT: I know there is a way to do it; it's all just software, so there is always a way. But what is a simple, practical way?
One way to do it is to create a TestMethodProgressMonitor.exe app, which reads from a named pipe, and updates a progress bar based on the messages that come through the pipe. The TestMethod can shellExec the TestMethodProgressMonitor.exe, then write to the named pipe. When finished, maybe there is a well-known shutdown command that the TestMethod sends to the TestMethodProgressMonitor.exe app.
Another option is to construct the TestMethodProgressMonitor.exe as a COM server, and the TestMethod can use COM (DCOM) to update a hosted progress bar within the app.
Another option is to use the user32.dll SendMessage() method to send a WM_COPYDATA message to the monitor app. This is sometimes done for remote control of apps.
Those are some of the possibilities. Before I set about building one of them, I'd like to know if there is a simpler way.