将 IWrapTestMethod 属性应用于整个夹具?

Apply an IWrapTestMethod attribute to a whole fixture?

我有一个 NUnit IWrapTestMethod 属性:

public class OutputElapsedTimeAttribute : Attribute, IWrapTestMethod
{
    public TestCommand Wrap(TestCommand command)
    {
        return new OutputElapsedTimeCommand(command);
    }
}

和相应的 BeforeAndAfterTestCommand:

public class OutputElapsedTimeCommand : BeforeAndAfterTestCommand
{
    private Stopwatch _sw;

    public OutputElapsedTimeCommand(TestCommand innerCommand) : base(innerCommand)
    {
        BeforeTest = ctx => { _sw = Stopwatch.StartNew(); };
        AfterTest = ctx =>
        {
            _sw.Stop();
            ctx.OutWriter.WriteLineAsync($"Took: {_sw.ElapsedMilliseconds}ms");
        };
    }
}

当我将属性应用于测试方法时,命令被正确调用并执行。我希望能够将属性放在测试夹具上,并自动将其应用于测试夹具中的所有测试。怎么做?我在文档中找不到合适的内容。

该接口仅由 NUnit 在具有该接口属性的测试中调用。 NUnit 也可以调用包含每个测试的夹具上的属性,但它不会这样做,因此需要对 NUnit 本身进行增强。

作为解决方法,请考虑创建一个 Action Attribute