Как создать единый / глобальный файл журнала для нескольких тестов NUnit - PullRequest
1 голос
/ 05 мая 2020

Я выполняю несколько тестов в обозревателе тестов Visual Studio, которые записываются в файл журнала (я использую Serilog). В настоящий момент каждый раз, когда мой BaseTest выполняет LoggingFactory.InitializeLoggingFactory(), он создает новый файл журнала, поэтому у меня есть несколько журналов для каждого тестового класса. Как мне вызвать LoggingFactory.InitializeLoggingFactory() глобально, чтобы я мог получить 1 файл журнала для каждого выполнения всех тестов?

    abstract class BaseTest
    {
        protected static IWebDriver driver;
        protected static WebDriverWait wait;
        protected static Actions actions;
        protected static ExcelDataFactory excelDataFactory;

        [OneTimeSetUp]
        public void startLogger()
        {
            LoggingFactory.InitializeLoggingFactory();
        }

        [SetUp]
        public void Initialize()
        {
            driver = new Browser().ConfigureBrowser(MyProps.Default.Browser);
            wait = new WebDriverWait(driver, TimeSpan.FromSeconds(MyProps.Default.TimeOut));
            actions = new Actions(driver);

            excelDataFactory = new ExcelDataFactory();
            ScreenshotFactory.SetDriverForScreenshot(driver);
            ExceptionTracker.RemoveAllExceptions();
        }

        [TearDown]
        public void CleanUp()
        {
            ExceptionTracker.PrintAllExceptions();

            if (driver != null)
            {
                driver.Close(); // Close the chrome window
                driver.Quit(); // Close the console app that was used to kick off the chrome window
                driver.Dispose(); // Close the driver.exe
            }
        }
    }

test explorer

logs

1 Ответ

1 голос
/ 05 мая 2020

Вы использовали [OneTimeSetUp] в классе фикстуры, поэтому метод выполняется один раз на фикстуру. Тот факт, что он находится в базовом классе, не означает, что он запускается реже, потому что базовый класс является логической частью каждого приспособления.

Вам необходимо создать SetUpFixture, класс, отмеченный [SetUpFixture], и поместить одноразовый метод настройки есть. Если вы хотите, чтобы журнал инициализировался только один раз для всей сборки, поместите класс SetUpFixture вне любого пространства имен.

Еще одна вещь ... Не не наследовать любые TestFixtures от SetUpFixture ... он стоит сам по себе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...