2014-06-10 9 views
6

ho una suite di test di unità utilizzando mstest che posso correre Frome bene all'interno di Visual Studio, ma quando i miei script Deploy cerca di eseguire i test utilizzando una chiamata da linea di comando per MSTest si congelerà durante un test metà tempo. E 'probabile un problema nel test, ma senza essere in grado di riprodurre il problema all'interno di un debugger sono stato in grado di trovare il problema.Come collegare debugger a linea di comando mstest

Finora non sono stato in grado di allegare il processo più semplice per poter eseguire il debug del problema, come quando collego e in pausa non vedo nulla in Visual Studio (nessun thread elencato, nessun codice noto). C'è qualcosa di strano in quanto utilizza AppDomain che impedisce facilmente connessi ad esso? Eventuali altri modi buoni per cercare di risolvere i problemi, è anche possibile fare l'equivalente di Console.WriteLine dall'interno della prova in modo che mstest visualizzerà nella finestra della console la sua esecuzione in?

+1

Assicurarsi di aver selezionato il tipo corretto debugger quando si collega - tenta di specificare in modo esplicito, invece di rilevamento automatico. –

+0

Hmm, strano. Si può fare 'Trace.WriteLine', e apparirà nel .trx generato, ma non sono sicuro che scrive il rapporto fino alla fine ... – Cameron

risposta

3

due opzioni.

  1. Nel test IDE deselezionare -> Impostazioni di prova -> Mantenere prova motore di esecuzione in funzione.

o

  1. Per utilizzare la riga di comando:

Run mstest con l'opzione/noisolation. Eseguirà i test direttamente anziché generare un processo di supporto.

misto: collegare automaticamente il debugger VS alla riga di comando MSTest.exe:

configura la scheda Debug per il mio progetto di test con il seguente:

Inizio Programma esterno: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ MSTest.exe

argomenti della riga di comando:/noisolation /testcontainer:MyProjectName.dll

2

Dopo aver esaminato la struttura del processo in Process Explorer, MSTest.exe avviava un processo figlio denominato QTAgent32_40.exe, ero in grado di collegarmi a tale processo e disattivare solo il mio codice in modo da poter eseguire il debug dei test.

risulta era efficace blocco critico all'interno di un oggetto fittizio ho creato che stava usando MethodImplOptions.Synchronized

+0

Anche se capito, mi sento di raccomandare che la risposta di Rob sotto essere unto la "risposta", in quanto si rivolge come eseguire il debug dall'interno VS, così come il modo di superare il lancio sottoprocesso. Ho avuto un problema simile a te, e la sua risposta ha fornito la chiave di (s). – tomo

0

Ecco il mio suggerimento per vstest.console strumento:

  1. Aggiungi nuovo metodo di test in fondo file di prova, in modo da questo test verrà eseguito per primo in vstest.console strumento:

    [TestMethod] 
    public void DebugAttachToProcessTimeout() 
    { 
        Console.ReadLine(); 
    } 
    
  2. Inizio Vstest.console.exe con adeguate assemblaggio come param. Lo strumento proverà a verificare il primo test e ad attendere l'input dell'utente.
  3. Passa a Visual Studio e andare a Debug -> Attach to process (CTRL + ALT + P). Quindi selezionare "Vstest.console.exe" e fare clic su "Allega".
  4. Ora si può tornare a consolare e premere invio. Lo strumento continuerà a eseguire i test con lo studio visivo allegato.
Problemi correlati