C# 如何为多个NUnit测试创建单个/全局日志文件

C# 如何为多个NUnit测试创建单个/全局日志文件,c#,selenium,nunit,serilog,C#,Selenium,Nunit,Serilog,我正在VisualStudioTestExplorer中执行一些写入日志文件的测试(我使用Serilog)。每次我的BaseTest执行LoggingFactory.InitializeLoggingFactory()时,它都会创建一个新的日志文件,因此每个测试类都有多个日志。如何全局调用LoggingFactory.InitializeLoggingFactory(),以便每次执行所有测试都能得到一个日志文件 抽象类BaseTest { 受保护的静态IWebDriver; 受保护的静态WebD

我正在VisualStudioTestExplorer中执行一些写入日志文件的测试(我使用Serilog)。每次我的BaseTest执行
LoggingFactory.InitializeLoggingFactory()
时,它都会创建一个新的日志文件,因此每个测试类都有多个日志。如何全局调用
LoggingFactory.InitializeLoggingFactory()
,以便每次执行所有测试都能得到一个日志文件

抽象类BaseTest
{
受保护的静态IWebDriver;
受保护的静态WebDriverWait等待;
受保护的静态动作;
受保护的静态ExcelDataFactory ExcelDataFactory;
[一次性设置]
公共场所
{
LoggingFactory.InitializeLoggingFactory();
}
[设置]
公共无效初始化()
{
driver=new Browser().ConfigureBrowser(MyProps.Default.Browser);
wait=newwebdriverwait(驱动程序,TimeSpan.FromSeconds(MyProps.Default.TimeOut));
动作=新动作(驱动程序);
excelDataFactory=新的excelDataFactory();
屏幕快照工厂。设置驱动程序用于屏幕快照(驱动程序);
ExceptionTracker.RemoveAllExceptions();
}
[撕裂]
公共空间清理()
{
ExceptionTracker.PrintAllExceptions()除外;
if(驱动程序!=null)
{
driver.Close();//关闭chrome窗口
driver.Quit();//关闭用于启动chrome窗口的控制台应用程序
driver.Dispose();//关闭driver.exe
}
}
}


您在fixture类中使用了
[OneTimeSetUp]
,因此该方法在每个fixture中执行一次。它位于基类中这一事实并不意味着它运行的次数更少,因为基类是每个fixture的逻辑部分

您需要创建一个SetUpFixture,一个用
[SetUpFixture]
标记的类,并将一次性设置方法放在那里。如果希望整个程序集的日志只初始化一次,请将SetUpFixture类放置在任何命名空间之外


还有一件事。。。不要从SetUpFixture继承任何TestFixture。。。它是独立的。

谢谢查理,我来试试你说的话