Применить атрибут IWrapTestMethod ко всему устройству? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть атрибут 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");
        };
    }
}

Когда я применяю атрибут к тестовому методу, команда правильно вызывается и выполняется. Однако я хочу иметь возможность поместить атрибут в тестовое устройство и применить его ко всем тестам в тестовом устройстве автоматически. Как это сделать? Я не могу найти ничего подходящего в документах.

1 Ответ

0 голосов
/ 15 сентября 2018

Интерфейс вызывается только NUnit в тестах, имеющих атрибут с этим интерфейсом.Было бы разумно, чтобы NUnit также вызывал атрибуты для прибора, содержащего каждый тест, но он этого не делает, поэтому потребовал бы усовершенствования самого NUnit.

В качестве обходного пути рассмотрите возможность создания Атрибут действия

...