NUnit自定义命令未调用Execute()

时间:2018-10-05 12:45:21

标签: nunit

我基于this blog post创建了一个自定义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 :(得分:1)

您的命令从不调用内部命令。因此,永远不会完成测试执行。查看NUnit自己的MaxTimeCommand的来源,以了解如何完成。请注意,您可以在调用innerCommand.Execute()之前和之后的代码中进行操作。

阅读了注释之后,我意识到您的示例可能与您的操作不完全匹配,但是您实际上只能为您提供给我们的代码答案。