2017-09-25 104 views
0

我已經使用nunit在MSVS2013中成功運行我的C#單元測試,使用nunit GUI和nunit控制檯。如何讓nunit3-console將調試結果輸出到屏幕上(在Windows中)?

對於前兩個我可以到我的調試輸出(Console.Write(...))。在MSVS2013中,通過在測試後單擊「輸出」鏈接可以查看MSVS2013,而在GUI中,調試顯示在「輸出」窗口中。

當我用nunit3-console.exe運行這個時,我只是得到總結報告。我試圖查看XML輸出中的內容(在TestResults.xml中),但只包含更多相同的摘要報告。

如何讓我的調試也出現在屏幕上?

我的命令行看起來是這樣的:

nunit3-console.exe "c:\path\to\my\assebly.dll" --trace=Verbose --test=Regression.Tests.HelloWorld 

測試的HelloWorld有行Console.Write("Hello World\r\n");它,我希望看到這個出現在屏幕(標準輸出)。

回答

0

您的Console.WriteLine(...)應該出現在輸出中,但在NUnit 3中,您應該在測試中使用TestContext.WriteLine(...)。由於NUnit 3能夠並行運行測試,因此它會捕獲該輸出,然後在測試結束運行時將其輸出到控制檯。這樣,輸出與測試相匹配,不會與其他測試交錯。

如果您希望輸出在寫入時立即熄滅,請使用TestContext.Progress.WriteLine(...)。例如,下面的測試,

[Test] 
    public void ExampleOfConsoleOutput() 
    { 
     Console.WriteLine("Console.WriteLine In ExampleOfConsoleOutput"); 
     TestContext.WriteLine("TestContext.WriteLine In ExampleOfConsoleOutput"); 
     TestContext.Progress.WriteLine("TestContext.Progress.WriteLine In ExampleOfConsoleOutput"); 
    } 

輸出以下,

=> nunit.v3.TestNameInSetup.ExampleOfConsoleOutput 
TestContext.Progress.WriteLine In ExampleOfConsoleOutput 
Console.WriteLine In ExampleOfConsoleOutput 
TestContext.WriteLine In ExampleOfConsoleOutput 

注意,進度消息被對方輸出之前的輸出,即使它是最後的測試。

您也不需要--trace命令行選項,即NUnit內部跟蹤。控制輸出的命令行選項是--labels,但默認值(無命令行選項)顯示上述輸出。

+0

回覆:Console.Write(...); ......你是對的,調試在測試結束時出現,我不知何故錯過了(我期待它實時發佈)......我失明瞭!但我真正想要的是「實時」調試 - 而TestContect.Progress.Write(...)效果很好! - 非常感謝。 –

相關問題