2016-05-30 37 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,并相信其他解决方案也有很好的选择。

这是非常耗费时间和烦人的必须弄清楚。很难发现和不明显的连接选择退出。选择加入解决方案会更好。