2016-05-18 12 views
0

Итак, у меня это работало, я переключился на paket, и я думаю, что некоторые версии dll's изменились.LoggerName уже используется

Однако я все еще не понимаю ошибку, которую я получаю.

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

мой код, в основном так же, как это здесь

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"); 
    } 
} 

и конфигурации

<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> 

Метод GetNLogLogger имеет перегрузку, которая принимает имя регистратора и bool для инкрементных суффиксов. Использовать их не помогает.

Я действительно смущен.

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 

редактировать: понизили все XUnit вещи в 2.1.0, тот же вопрос.

+0

у вас есть StackTrace? – Julian

+0

добавил спасибо;) –

+0

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

ответ

0

outputHelper.GetNLogLogger(); зовут AddTestOutputHelper("")

Я предполагаю, что это работает, только если вы называете это один раз.

Вы можете использовать outputHelper.GetNLogLogger("myname"); или outputHelper.GetNLogLogger(typeof(NLogTests).Name);

+0

Как я уже сказал, я пробовал эти перегрузки. Этот тест запускается только один раз, и, похоже, его уже не установили. –

+0

или, чтобы быть ясным, я могу прокомментировать все остальные тесты, чтобы это сделать, и по-прежнему получить rror –

+0

порекомендовал бы опубликовать вопрос на https://github.com/tdupont750/xunit.NLog – Julian