我基于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和控制台运行程序。
答案 0 :(得分:1)
您的命令从不调用内部命令。因此,永远不会完成测试执行。查看NUnit自己的MaxTimeCommand的来源,以了解如何完成。请注意,您可以在调用innerCommand.Execute()
之前和之后的代码中进行操作。
阅读了注释之后,我意识到您的示例可能与您的操作不完全匹配,但是您实际上只能为您提供给我们的代码答案。