首页 > 解决方案 > NUnit 自定义命令未调用 Execute()

问题描述

NUnit根据这篇博客文章创建了一个自定义属性(有一些小的调整),它基本上只返回一个自定义命令。该命令派生自DelegatingTestCommand并覆盖ExecuteExecute似乎没有被调用。我正在输出到测试上下文,但我从来没有看到输出。缩小的代码示例:

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 和控制台运行程序。

标签: nunit

解决方案


您的命令永远不会调用内部命令。因此,从未完成任何测试执行。查看 NUnit 自己的 MaxTimeCommand 的源代码,看看它是如何完成的。请注意,您可以在调用innerCommand.Execute().

阅读评论后,我意识到您的示例可能与您正在做的不完全匹配,但您我们真的只能为您提供有关您向我们展示的代码的答案。


推荐阅读