运行 SpecFlow 测试时,Log4Net 在 Selenium Framework 中不工作
Log4Net not working in Selenium Framework when Running SpecFlow Tests
我现在在 Log4Net 上苦苦挣扎了好一阵子。我已经关注了这个 post
举个例子。不同之处在于,在我的例子中,我有两个独立的项目,一个包含与 WebDriver 和 Web 元素交互的所有对象 (FrameworkProject
),第二个是实际测试项目 (TestProject)。我已经阅读了很多,我几乎可以肯定我已经正确设置了它......
FrameworkProject 程序集文件包括 [assembly: log4net.Config.XmlConfigurator(Watch = true)]
我的Log4Net.config
文件如下:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="MyAppender" />
<appender-ref ref="MyFileAppender" />
</root>
<appender name="MyAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
<appender name="MyFileAppender" type="log4net.Appender.FileAppender">
<file value="application.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
当我调试我的 SpecFlow 测试并到达 XmlConfigurator.Configure();
行时(查看上面的示例)我仍然得到
log4net:ERROR Failed to find configuration section 'log4net' in the application's.
这让我很生气,我不知道哪里出了问题。这可能是 运行 测试的原因吗?注意:我仅在 FrameworkProject
中设置了 log4net
I have log4net set up ONLY in FrameworkProject
这就是问题所在。粗略地说,您的 "entry point" 在测试执行期间是您的 测试项目 ,因此它正在 "entry point's" 应用程序配置文件中寻找 log4net
配置部分(测试项目的app.config
)。因此,您应该将 log4net
配置移动到测试项目的应用程序配置文件。
第二次通知,如果您使用程序集级别的属性,您似乎不需要调用 XmlConfigurator.Configure
:1, 2.
我现在在 Log4Net 上苦苦挣扎了好一阵子。我已经关注了这个 post
举个例子。不同之处在于,在我的例子中,我有两个独立的项目,一个包含与 WebDriver 和 Web 元素交互的所有对象 (FrameworkProject
),第二个是实际测试项目 (TestProject)。我已经阅读了很多,我几乎可以肯定我已经正确设置了它......
FrameworkProject 程序集文件包括 [assembly: log4net.Config.XmlConfigurator(Watch = true)]
我的Log4Net.config
文件如下:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="MyAppender" />
<appender-ref ref="MyFileAppender" />
</root>
<appender name="MyAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
<appender name="MyFileAppender" type="log4net.Appender.FileAppender">
<file value="application.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
当我调试我的 SpecFlow 测试并到达 XmlConfigurator.Configure();
行时(查看上面的示例)我仍然得到
log4net:ERROR Failed to find configuration section 'log4net' in the application's.
这让我很生气,我不知道哪里出了问题。这可能是 运行 测试的原因吗?注意:我仅在 FrameworkProject
log4net
I have log4net set up ONLY in FrameworkProject
这就是问题所在。粗略地说,您的 "entry point" 在测试执行期间是您的 测试项目 ,因此它正在 "entry point's" 应用程序配置文件中寻找 log4net
配置部分(测试项目的app.config
)。因此,您应该将 log4net
配置移动到测试项目的应用程序配置文件。
第二次通知,如果您使用程序集级别的属性,您似乎不需要调用 XmlConfigurator.Configure
:1, 2.