XUNIT ITestOutputHelper внедрить в MessageSink - PullRequest
0 голосов
/ 15 марта 2019

Итак, я недавно создал приемник сообщений xunit, который с этого момента я буду называть тестовым слушателем.

Что он делает: когда бегун xunit достигает точки события, такого как `ITestStarting ', он отправляет это событие слушателю. Теперь, как бегун xunit знает, как отправить этому слушателю?

class LoggerRunnerReporter : IRunnerReporter
{
    public string Description => "Logger custom reporter";

    public bool IsEnvironmentallyEnabled => true;

    public string RunnerSwitch => "loggercustomreporter";

    public IMessageSink CreateMessageHandler(IRunnerLogger logger)
    {
        return new LoggerMessageSink(logger);
    }
}

Когда тесты начинаются, XUNIT сканирует сборку, в которой находятся тесты, и, если он находит класс, реализующий IRunnerReporter, он регистрирует то, что находится внутри него, как приемник сообщений, который обрабатывает события.

Теперь вот моя проблема, так как это происходит полностью параллельно с фактическим бегуном (даже если бегун запускает тесты параллельно), у меня не будет доступа к фактическому ITestOutputHelper в моем приемнике сообщений, чтобы фактически иметь возможность что-либо регистрировать в приставка. Так есть ли обходной путь для этого?

Ради примера и мне не разрешено копировать фактическую реализацию приемника сообщений из этого примера (Моя реализация не такая, но концепция передачи помощника будет идентична).

Также, чтобы добавить к этому, я уже пытался каким-то образом получить экземпляр помощника посредством отражения и не смог этого сделать

...