NUnit пользовательская команда не вызывает в Execute () - PullRequest
0 голосов
/ 05 октября 2018

Я создал собственный атрибут NUnit на основе этого сообщения в блоге (с несколькими незначительными изменениями), который в основном просто возвращает пользовательскую команду.Команда происходит от DelegatingTestCommand и переопределяет Execute, но Execute, похоже, не вызывается.Я вывожу в тестовый контекст, и я никогда не вижу вывод.Пример минимизированного кода:

public class PrintingCommand : DelegatingTestCommand
{
    public PrintingCommand( TestCommand innerCommand )
        : base(innerCommand){}

    public override TestResult Execute( TestExecutionContext context )
    {
        context.OutWriter.WriteLine( "Hello output" );
        return context.CurrentResult;
    }
}


[AttributeUsage( AttributeTargets.Method )]
public class PrintingAttribute : Attribute, IWrapSetUpTearDown
{
    public TestCommand Wrap( TestCommand command )
    {
        return new PrintingCommand( command );
    }
}

Когда я украшаю тест с помощью [Printing], я никогда не вижу Hello output, записанного в любом месте.

Это тривиальный пример, на самом деле я делаюповтора в блоге, который не вызывается / не завершается.

Есть идеи, почему?

Использую NUnit 3 и консольный запуск в командной строке.

1 Ответ

0 голосов
/ 05 октября 2018

Ваша команда никогда не вызывает внутреннюю команду.Следовательно, выполнение теста никогда не завершается.Посмотрите на источник собственной MaxTimeCommand NUnit, чтобы увидеть, как это можно сделать.Обратите внимание, что вы можете делать что-то в своем коде как до, так и после вызова innerCommand.Execute().

. Прочитав комментарии, я понимаю, что ваш пример может не совсем соответствовать тому, что вы делаете, но вы, мы действительно можемтолько дать вам ответы о коде, который вы нам показываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...