Esiste un modo per mostrare lo stato di avanzamento di un singolo TestMethod in Visual Studio 2008?È possibile visualizzare i progressi durante l'esecuzione di un TestMethod di Visual Studio?
All'interno di un set di test di unità, ho un singolo TestMethod che viene eseguito per un tempo molto, molto lungo - normalmente ci vorranno tra 30 e 60 minuti. Ho impostato il timeout usando l'attributo [Timeout], nessun problema lì. Ma mi piacerebbe essere in grado di ottenere un'indicazione visiva del progresso del test.
So che la finestra Risultati del test fornisce un aggiornamento visivo di tutti i metodi di test. Quello che voglio è un aggiornamento visivo di un singolo metodo. In un'app WinForms vorrei aprire un controllo ProgressBar. In un'app console, posizionerei il cursore e visualizzerei un messaggio di stato. Ma questo è un test unitario. Posso scrivere su TestContext, ma quella finestra non è visualizzabile fino al completamento del test.
EDIT: so che c'è un modo per farlo; è tutto solo software, quindi c'è sempre un modo. Ma cos'è un modo semplice e pratico?
Un modo per farlo è creare un'applicazione TestMethodProgressMonitor.exe, che legge da una named pipe, e aggiorna una barra di avanzamento in base ai messaggi che arrivano attraverso la pipe. Il TestMethod può shellExec il TestMethodProgressMonitor.exe, quindi scrivere nella named pipe. Al termine, forse c'è un noto comando shutdown che TestMethod invia all'app TestMethodProgressMonitor.exe.
Un'altra opzione è la costruzione di TestMethodProgressMonitor.exe come server COM e TestMethod può utilizzare COM (DCOM) per aggiornare una barra di avanzamento ospitata all'interno dell'app.
Un'altra opzione consiste nell'utilizzare il metodo sendMessage() user32.dll per inviare un messaggio WM_COPYDATA all'app monitor. A volte ciò viene fatto per il controllo remoto delle app.
Queste sono alcune delle possibilità. Prima di iniziare a costruirne uno, mi piacerebbe sapere se esiste un modo più semplice.
un test di unità che richiede tanto tempo, non è un test di unità per definizione. Che cosa ci mette a prendere così tanto tempo? –
È un test per la creazione di un file ZIP64; Il test crittografa un insieme di file che risultano in un file zip superiore a 4 GB. Quindi il file zip viene aggiornato e salvato nuovamente (due volte). Il codice è di circa 5 righe circondate da un ciclo. Ma c'è un sacco e un sacco di I/O e un sacco di DEFLATE. Stai davvero dicendo che la definizione di unit test include un limite di tempo? Qual è il limite di tempo? – Cheeso