【问题标题】:Log4Net not working under MSTestLog4Net 在 MSTest 下不工作
【发布时间】:2012-10-30 12:08:42
【问题描述】:

我正在使用 NuGet 管理 C# 项目的构建以获取 Common.Logging.Log4Net。从 Visual Studio 2010 运行时,单元测试全部通过,没有错误,但是当我使用 MSTest 从命令行运行时(因此当 TeamCity 执行相同操作时),当单元测试组织一个执行此操作的类时,我会失败:

private static readonly ILog Log = LogManager.GetCurrentClassLogger();

错误是:

测试方法 MyProject.Tests.Unit.BusinessDateBuilderTest.CreateElementalTest 抛出 异常:System.TypeInitializationException:类型初始化程序 对于 'MyProject.Common.Library' 抛出异常。 ---> System.TypeInitializationException:类型初始化程序 对于 'MyProject.Common.Initialization.Impl.InitializationLoaderImpl' 抛出了一个 例外。 ---> Common.Logging.ConfigurationException: 获取配置失败 用于配置部分“common/logging”中的 Common.Logging。 ---> System.Configuration.ConfigurationErrorsException:创建时出错 公共/日志记录的配置部分处理程序:无法创建 输入“Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net” (C:\Subversion\Project\MyProject.Tests.Unit\bin\Debug\TestResults\rac_DWM300619 2012-10- 30 11_58_34\Out\MyProject.Tests.Unit.dll.config 第 168 行)---> Common.Logging.ConfigurationException:无法创建 输入“Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net”---> System.IO.FileNotFoundException:无法加载文件或 程序集“Common.Logging.Log4net”或其依赖项之一。系统找不到 指定的文件。

我正在使用以下 NuGet 依赖项:

Common.Logging.2.1.1(DLL 版本为 2.1.1.0) Common.Logging.Log4Net.2.0.1(DLL版本为2.0.0.0) log4net.1.2.10(DLL版本为1.2.10)

我注意到 Common.Logging.Log4net.dll 没有复制到 testresults 输出文件夹 - 这是问题吗?如果是这样,我该如何解决?

【问题讨论】:

  • 确保将Common.Logging.Log4net 程序集复制到运行测试的目录中。
  • 是的,但是怎么做?复制了 Common.Logging.dll,但没有复制 Common.Logging.Log4net.dll。
  • 在您的应用程序中添加对程序集的引用。

标签: c# visual-studio-2010 log4net mstest nuget


【解决方案1】:

MSTest 有时会将程序集复制到新文件夹并从那里运行测试。问题是某些版本(所有版本?)对要复制的程序集使用某种静态分析。而且由于来自公共日志记录的 log4net 连接是非常动态的(使用公共日志记录的目的),因此永远不会复制程序集,因此会出现错误。
如果你想解决这个问题,你需要为 MSTest 创建一个 testsettings 文件(从 Visual Studio 内部)。然后将 deploymentItems (您缺少的程序集)添加到它。然后你需要将你的命令行指向它。在 teamcity 中,您在配置 MsTest 运行器时在“MSTest 运行配置文件”中执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多