2011-09-18 11 views
17

Sto cercando di mostrare alcune informazioni da un metodo [TestMethod].Come Console.WriteLine da [TestMethod]?

Di solito si usa NUnit e una linea con Console.WriteLine corre bene e possiamo vederlo nella finestra 'uscita', ma su questo progetto dobbiamo utilizzare strumenti di test Embebed con VS2010 e Console.WriteLine non funziona perché non possiamo vedere nulla .

Quello che voglio è messaggi spettacolo traccia nella finestra 'uscita' in questo modo, più o meno:

using System; 
using System.Text; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 


namespace Test1 
{ 
    [TestClass] 
    public class TestNum1 
    { 
     [TestMethod] 
     public void Constructors() 
     { 
      for (int b = 1; b < 99; b++) { 
       Console.WriteLine(b.ToString()); // <<<<<<< This don't show on Output. 
       Assert.AreEqual(b, b); // This is only a silly sample. 
      } 
     } 
    } 
} 
+0

Sì, hai ragione spiacenti mia. domanda duplicata ma devo aggiungere una nota: è necessario eseguire i test in modalità debug o non è possibile visualizzare alcun output – ferpega

risposta

26

è necessario sostituire Console.WriteLine con System.Diagnostics.Debug.WriteLine(...)

e vedrete l'output in Visual Studio Debug Output Window.

Edit: appena scoperto ora questa è una domanda duplicato, guarda qui:

How to write to Console.Out during execution of an MSTest test

+2

Ciao @Davide Piras, ho modificato 'Console.WriteLine' con' System.Diagnostics.Debug.WriteLine' ma Non riesco ancora a vedere qualsiasi cosa nella mia finestra di output. – ferpega

+1

Ok .. Ho visto che DEVI eseguire i test in modalità debug o non riesco a vedere nulla. – ferpega

+0

È necessario eseguire i test in modalità di debug se e solo se si utilizza Debug.WriteLine - se si utilizza Trace.WriteLine, è possibile utilizzare qualsiasi build build, compresa la release –

6

è possibile forzare la visualizzazione di Console.WriteLine() eseguendo MSTest riga di comando con l'opzione /detail:stdout.

ad esempio:

MSTEST /testcontainer:MyDllToTest.dll /testSettings.local.TestSettings /detail:stdout 

(nota io uso /testSettings per impedire la copia DLL (distribuzione) in una directory TestResults

17

è possibile utilizzare il testContextInstance.WriteLine(string s);

+1

Sarebbe molto bello sapere da dove dovrebbe venire. – Akku

+5

@Akku, basta aggiungere 'public TestContext TestContext {get; impostato; } 'alla tua classe. Il test runner lo popola per te. Puoi anche riceverlo come parametro per i tuoi metodi 'ClassInitialize' e' AssemblyInitialize'. – Sam

+0

Esattamente quello che stavo cercando! Il testo emesso direttamente nella finestra dei risultati del test è perfetto! – Shawson

Problemi correlati