2016-05-18 18 views
0

Also ich hatte dies funktioniert, ive auf Paket umgestellt und ich denke, einige Versionen von DLLs haben sich geändert.LoggerName bereits in Verwendung

Allerdings verstehe ich immer noch nicht den Fehler, den ich bekomme.

System.ArgumentException : LoggerName already in use 
     Parameter name: loggerName 

mein Code ist im Grunde genau so, wie es hier

ist

http://www.tomdupont.net/2015/06/capture-xunit-test-output-with-nlog-and.html

public class NLogTests : IDisposable 
{ 
    private readonly ILogger _logger; 

    public NLogTests(ITestOutputHelper outputHelper) 
    { 
     _logger = outputHelper.GetNLogLogger(); 
    } 

    public void Dispose() 
    { 
     _logger.RemoveTestOutputHelper(); 
    } 

    [Fact] 
    public void Hello() 
    { 
     _logger.Trace("World Trace"); 
     _logger.Debug("World Debug"); 
     _logger.Warn("World Warn"); 
     _logger.Error("World Error"); 
    } 
} 

und Config

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    throwExceptions="true"> 
    <extensions> 
    <add assembly="xunit.NLog" /> 
    </extensions> 
    <targets async="false"> 
    <target xsi:type="TestOutput" 
     layout="${time}|${level:uppercase=true}|${logger}|${message}" 
     name="Test" /> 
    </targets> 
    <rules> 
    <logger name="*" minlevel="Debug" writeTo="Test" /> 
    </rules> 
</nlog> 

Die GetNLogLogger Methode hat eine Überlastung, die einen Logger Namen hat und ein Bool für inkrementelle Suffixe. Diese zu verwenden, hilft nicht.

Ich bin wirklich verwirrt.

Stacktrace:

System.ArgumentException 
LoggerName already in use 
Parameter name: loggerName 
    at Xunit.NLog.Targets.TestOutputTarget.Add(ITestOutputHelper testOutputHelper, String loggerName) 
    at Xunit.NLog.Helpers.TestOutputHelpers.AddTestOutputHelper(ITestOutputHelper testOutputHelper, String loggerName, Boolean addNumericSuffix) 
    at Xunit.NLogTestOutputExtensions.GetNLogLogger(ITestOutputHelper testOutputHelper, String loggerName, Boolean addNumericSuffix) 
    at ProjectRake.BusinessLogic.Spec.TautologiesToVerifyNLogOutput..ctor(ITestOutputHelper outputHelper) in M:\programming\ProjectRake\src\server\ProjectRake.BusinessLogic.Spec\TautologiesToVerifyNLogOutput.cs:line 19 

edit: haben alle xunit Sachen 2.1.0, gleiches Problem herabgestuft.

+0

haben Sie einen Stacktrace? – Julian

+0

hinzugefügt danke;) –

+0

Bibliothek: https://github.com/tdupont750/xunit.NLog – Julian

Antwort

0

outputHelper.GetNLogLogger(); ruft AddTestOutputHelper("")

Ich denke, es funktioniert nur, wenn man es einmal nennen.

können Sie outputHelper.GetNLogLogger("myname"); verwenden oder outputHelper.GetNLogLogger(typeof(NLogTests).Name);

+0

Wie ich schon sagte, habe ich diese Überladungen versucht. Dieser Test wird nur einmal ausgeführt und es scheint nicht so, als wäre er bereits gesetzt. –

+0

oder um klar zu sein, ich kann auskommen alle anderen Tests bar dies und immer noch die ROR –

+0

würde empfehlen, ein Problem auf https://github.com/tdupont750/xunit.NLog zu posten – Julian