Получить выходной журнал при сбое теста во время установки - PullRequest
0 голосов
/ 10 декабря 2018

Я запускаю автоматические юнит-тесты с SpecFlow и Selenium.SpecFlow предлагает атрибуты BeforeTestRun, BeforeFeature и BeforeScenario для выполнения кода между тестами в соответствующее время.

Я также использую log4net для записи результатов теста.

Когдатест не пройден во время теста или во время фазы BeforeScenario, я вижу записанные выходные данные.

Но когда тест не пройден во время BeforeTestRunили BeforeFeature, нет доступных выходных данных.

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

Есть ли какой-либо способ использовать log4net для получения выходных журналов, когда тест не пройден до начала отдельного теста?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

На самом деле странно, что он не показывает журнал при неудачном тестировании.Это хорошо для меня показывает: enter image description here

Я предлагаю попробовать проверить, что ваш log4net выводит все журналы на консоль.На самом деле, если вы не делали каких-либо специальных манипуляций, то ваш логгер должен по умолчанию иметь консольный аппендер.

Я запускаю свой регистратор следующим образом:

private static readonly ILog log =
            LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

Еще одно предположение: возможно, когда ваш тест не пройден в OneTimeSetup Fixture, у него еще нет журнала.

0 голосов
/ 11 декабря 2018

Вы можете реализовать пользовательский метод со ссылкой на объекты TestResult и TestContext.И вы можете вызвать его в [TearDown] или где-нибудь в конце теста:

    if (TestContext.CurrentContext.Result.Outcome.Status.ToString() == "Failed")
    {
     string message = TestContext.CurrentContext.Result.Message;
     string logs = TestContext.CurrentContext.Result.StackTrace;
    }
    else if (TestContext.CurrentContext.Result.Outcome.Status.ToString() == "Passed")
    {
    //User defined action
    }
    else
    {
     string otherlog = TestContext.CurrentContext.Result.Outcome.Status.ToString();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...