运行 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.Configure1, 2.