2016-05-30 51 views
2

我正在嘗試爲OWIN服務編寫單元測試,但是一旦我一次運行所有測試,並且真正使構建服務器上的日誌輸出由於所有噪聲而無用,我測試中的任何日誌語句都會開始複製。我蒸的問題降到一個非常簡單的攝製:Owin TestServer測試時記錄多次 - 我該如何解決這個問題?

[TestFixture] 
public class ServerTest 
{ 
    [Test] 
    public void LogOnce() 
    { 
     using (TestServer.Create(app => { })) 
     { 
      Debug.WriteLine("Log once"); 
     } 
    } 

    [Test] 
    public void LogTwice() 
    { 
     using (TestServer.Create(app => { })) 
     { 
      Debug.WriteLine("Log twice"); 
     } 
    } 
} 

如果我在運行一段時間,我得到預期的輸出一個測試:

=> ServerTest.LogOnce 
Log once 

=> ServerTest.LogTwice 
Log twice 

如果我進行的測試,一下子我得到:

=> ServerTest.LogOnce 
Log once 

=> ServerTest.LogTwice 
Log twice 
Log twice 

初始化TESTSERVER一次就能解決問題,但我在尋找一個解決方案,讓我繼續爲我選擇實例許多TESTSERVER實例。

回答

2

這篇文章指出HostingEngine如何拖欠的的TraceListener和方法來禁用此: TraceListener in OWIN Self Hosting

有了這種洞察力,我通過TestServer.Create的源代碼跟蹤,並確認其在內部創建一個HostingEngine打開TraceListener,最終將結果輸出到控制檯。我已經確認了最高的投票數(在撰寫本文時),該頁的修復程序適用於TestServer,並相信其他解決方案也有很好的選擇。

這是非常耗費時間和煩人的必須弄清楚。很難發現和不明顯的連接選擇退出。選擇加入解決方案會更好。