NUnit 的 log4Net 问题(尝试过 v2.5.7、2.5.2、2.4.8、2.4.7)

2023-12-12

针对生产代码程序集运行 NUnit 时,我收到错误(请参阅帖子底部)。生产代码程序集引用了内部使用 log4net 的第三方框架(具体来说,这是 SimplyAccounting 的 SDK)。它使用的log4net版本是1.2.9.0。在我们通过 dll 文件中的公共 api 使用的这个第三方框架之外,log4net 不是我们生产代码的一部分。

在进行故障排除时,我从单元测试项目中删除了对生产代码程序集的引用,并添加了对 SimplyAccounting SDK 的引用。当我这样做时,NUnit 抛出以下错误。如果第三方引用(或生产代码引用)不在测试项目中,则 Nunit 运行良好。任何可能存在 log4net 冲突的解决方法都会有所帮助。我正在使用 NUnit 2.5.2。

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at log4net.Layout.LayoutSkeleton.get_Header()
   at log4net.Appender.TextWriterAppender.WriteHeader()
   at log4net.Appender.TextWriterAppender.set_Writer(TextWriter value)
   --- End of inner exception stack trace ---

Server stack trace: 
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
   at NUnit.Core.Log4NetCapture.SetAppenderTextWriter(TextWriter writer)
   at NUnit.Core.Log4NetCapture.StartCapture()
   at NUnit.Core.TextCapture.set_Enabled(Boolean value)
   at NUnit.Core.RemoteTestRunner.StartTextCapture(EventListener queue)
   at NUnit.Core.RemoteTestRunner.BeginRun(EventListener listener, ITestFilter filter)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at NUnit.Core.TestRunner.BeginRun(EventListener listener, ITestFilter filter)
   at NUnit.Core.ProxyTestRunner.BeginRun(EventListener listener, ITestFilter filter)
   at NUnit.Util.TestDomain.BeginRun(EventListener listener, ITestFilter filter)
   at NUnit.Util.TestLoader.RunTests(ITestFilter filter)
   at NUnit.UiKit.TestSuiteTreeView.RunTests(ITest[] tests, Boolean ignoreCategories)
   at NUnit.UiKit.TestSuiteTreeView.RunSelectedTests()
   at NUnit.UiKit.TestTree.RunSelectedTests()
   at NUnit.Gui.NUnitForm.runButton_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

一种解决方案(尽管相当具有破坏性并且没有解决根本问题)是让您的生产程序集与包装 SimplyAccount SDK 的接口对话,而不是直接与其对话。然后,您的生产代码不需要引用 SDK dll,您可以通过传入您创建的接口的假实现来自由测试它。

这具有与 SDK 分离的设计优势,但正如我所说,它可能会对您的代码库造成很大的破坏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NUnit 的 log4Net 问题(尝试过 v2.5.7、2.5.2、2.4.8、2.4.7) 的相关文章

  • 如何将 ZF2 单元/应用程序模块测试合并到单个调用中?

    我遵循将测试存储在模块中的 ZF2 约定 并且当从每个模块内运行测试时一切正常 我想做的是有一个根级别的 phpunit xml 来调用各个模块测试并将它们合并以生成代码覆盖率数据和其他指标 问题是每个单独的测试套件都是在模块化 phpun
  • 如何对 SQL Server 中的数据库进行单元测试?

    有哪些方法呢 您可以使用哪些框架 好吧 我想你的意思是对访问数据库的代码进行单元测试 在这种情况下 有NDbUnit http www ndbunit org 它似乎是 NET 的 DbUnit 克隆 我从来没有使用过它 但是我使用过DbU
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • 如何在 Visual Studio 中运行单个测试或特定文件夹中的所有测试?

    因此 我将从带有 ReSharper 的 Visual Studio 2015 迁移到 Visual Studio 2017 并尝试从我的工作流程中删除 ReSharper 我知道 CTRL R T 运行整个 TestClass 或所有测试
  • HttpContext 中需要什么才能允许 FormsAuthentication.SignOut() 执行?

    我正在尝试为我们的注销方法编写一个单元测试 除其他外 它FormsAuthentication SignOut 然而 它抛出一个System NullReferenceException 我创建了一个模拟 HttpContext 使用起订量
  • Autofixture 和 WebApi 控制器

    我正在使用 AutoFixture 尝试测试 WebApi 站点的控制器 我正在将 AutoData 功能与 Moq 一起使用 如上所述普洛的博客 http blog ploeh dk 2010 10 08 AutoDataTheories
  • 如何在要测试的 React 组件内模拟自定义钩子?

    如果您有一个调用获取数据的自定义挂钩的 React 组件 那么在测试 React 组件时模拟内部自定义挂钩结果的最佳方法是什么 我看到两种主要方法 1 Jest mock 自定义钩子 这似乎是最推荐的方法 但它似乎要求测试对内部实现细节以及
  • 是否可以创建 Java RAM 磁盘以与 java.io.* API 一起使用?

    我正在使用一个第三方库 它基本上创建一个输出目录 其中包含不同类型的文件和子目录 我希望能够编写单元测试来确认输出正确 我希望能够将库与 RAM 磁盘一起使用 这样库所做的任何事情都不会以任何方式接触实际的磁盘板 这个想法是让测试运行和清理
  • 如何让 Mockito 在 androidTest 中工作

    在我的测试中 我如何模拟我编写的课程 这是我的测试代码 import android support test runner AndroidJUnit4 import org junit Before import org junit Te
  • Python unittest - 使用列表断言字典

    在为我的班级编写一些测试时 我遇到了有趣的简单问题 我想断言两个字典包含一些列表 但是这个列表可能不会以相同的方式排序 gt 这会导致测试失败 Example def test myobject export into dictionary
  • 您可以像将数据传递给测试用例一样将数据传递给测试装置吗?

    您可以像将数据传递给测试用例一样将数据传递给 NUnit3 测试装置吗 这样做有意义吗 根据参数运行套件 夹具类 绝对地 如果你需要传入的参数数量有限 你可以将它们放在普通的参数中 TestFixture 属性 它们将被传递给 TestFi
  • 使用 NUnit 或 XUnit 时如何将参数传递给 dotnet test 命令

    我正在使用 C 和 NET Core Selenium 和 NUnit 开发一些端到端测试 现在我想写一个登录测试用例 我的测试是从控制台开始的 只需使用dotnet test命令 我只想将用户名和密码传递给此命令并在我的测试中获取它们 我
  • Angular2 如何对自定义验证器指令进行单元测试?

    我为输入字段编写了一个非常简单的自定义验证器 import Directive from angular core import AbstractControl NG VALIDATORS from angular forms functi
  • Bug:VS2017 Live 单元测试 - 只有减号 - 不起作用

    TL 博士 编辑6 我缩小了范围并提供了重现问题 错误的 5 个步骤 创建 VS2017 c 控制台应用程序 Net 完整框架 将方法添加到 Program cs 并使该类公开 public class Program static voi
  • AngularJS 和 PouchDB 服务的单元测试

    我正在尝试对我的个人 Angular 工厂进行单元测试 但很难尝试正确模拟和注入 PouchDB 对象 我的工厂代码目前如下 factory Track function var db new PouchDB tracks var reso
  • pydev 断点不起作用

    我正在使用 python 2 7 2 sqlalchemy 0 7 unittest eclipse 3 7 2 和 pydev 2 4 开发一个项目 我在 python 文件 单元测 试文件 中设置断点 但它们被完全忽略 之前 在某些时候
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including

随机推荐

  • 自签名小程序可以访问本地文件系统吗

    您好 我已经创建了一个自签名小程序 但无法访问本地文件系统 我该怎么办 你需要将你的IO代码包装在里面特权动作 通常 您需要使用测试证书对小程序进行签名 用户将看到警告 并且在加载小程序时必须接受证书 那么您需要将代码包装在 Privili
  • Python:binned_statistic_2d 均值计算忽略数据中的 NaN

    我在用scipy stats binned statistic 2d通过查找每个箱内点的平均值 将不规则数据分箱到统一网格上 x y np meshgrid sort np random uniform 0 1 100 sort np ra
  • src绝对路径问题

    我有一个图像C wamp www site img我尝试将其显示在页面中 img src 但它不起作用 该文件实际上在那里 如果我尝试使用相对路径引用它 我就会得到图片 img src img mypicture jpg 错误在哪里 我错过
  • 在 Windows 中从命令行运行 python 脚本

    我正在尝试跑步蛇食 分析一个Python项目 我使用的是 Windows 机器 到目前为止我已经能够弄清楚如何 安装 Tortoise for Mercurial 以从站点下载 SnakeFood 代码 设置 Windows 路径以从命令提
  • Jquery 自动完成底部附加链接

    I am using jQuery auto complete plugin in my web project I want to show 3 element and after that i want to append see al
  • 如何通过重新定义的 ListBox 模板使用 UI 虚拟化

    我正在尝试使用 ListBox 作为包含多个项目的视图 当然 我需要在其中使用 UI 虚拟化 问题是虚拟化仅在我以这种方式声明 ListBox 时才起作用
  • 如何以编程方式获取下一个预定的触发时间?

    我制作了一个新的可安装触发器 该触发器每 2 天以编程方式为我的电子表格触发一次 那么当我返回到电子表格时 我可以得到下次触发函数的时间吗 或者甚至它触发的频率是多少 我所看到的是我可以获得它的类型 它触发的函数 唯一ID等等 Thanks
  • 如何删除具有任何零值的行

    我有一个问题需要解决如何删除 R 中具有零值的行 另一方面 我可以使用na omit 删除所有 NA 值或使用complete cases 删除包含 NA 值的行 有谁知道如何删除 R 中具有零值的行 例如 Before DateTime
  • 正则表达式匹配多个组

    我有以下带有正则表达式的字符串示例 我试图匹配它 Regex d 3 0 9a fA F 2 3 要匹配的字符串 010 00 00 00 我的问题是这样的 正则表达式匹配并捕获 1 组 最终00在字符串的末尾 但是 我希望它能够匹配所有三
  • 如何判断 `constexpr` 是否在编译时求值(无需手动检查)

    有没有一种标准方法可以找出编译器做了什么constexpr功能 旁注 对于调试 默认情况下每个 constexpr 函数都会推迟到运行时 为什么这是明智的 有没有办法影响这一点 对于发布取决于上下文 显然 对于小型测试设置 您可以轻松检查生
  • MySQL 如何解释 VARCHAR 字段大小?

    假设一个字段是这样声明的 a VARCHAR 255 其中可以存储多少个字符 是255还是256 使用了多少空间 我们应该使用 2 的幂然后减去 1 还是没有关系 A VARCHAR 255 最多可以存储 255 个字符 无论字符集编码所需
  • Azure 上的 Asp.Net VNext 应用程序设置

    我真的很喜欢 Asp Net vNext 使用默认 appsettings json 的新配置功能 但当我将网站发布为 Azure Web 应用程序时 我想更改该文件的值 旧的 web config appsettings 很容易更改和配置
  • 使用 pyexiftool 编辑/更新照片元数据的数据

    我想使用 exiftool 更新照片元数据的数据 例如温度传感器 高度传感器和 GPS 经度 高度的数据 首先 我尝试在 exiftool 配置文件中使用命令行添加这些数据的新标签 并且它有效 现在 我想使用 python 脚本更新数据 然
  • 如何在窗口控制台应用程序中调用非静态方法

    我构建了一个控制台应用程序 并尝试测试我的应用程序是否按预期工作 我创建了 API 类的实例 如下面的代码所示 但收到错误 An object reference is required for the non static field 我
  • 包“forecast”的安装具有非零退出状态

    With R version 3 2 3 2015 12 10 on centOS我在尝试着install packages forecast 我明白了 install packages 预测 将软件包安装到 usr lib64 R lib
  • 随机化数组

    我希望实现 Dr D E Knuth 的减法随机数生成算法 我希望实现一个 ATM 面板 当用户登录时 按钮将被扰乱 每个按钮都会改变其位置 这是我的代码 Public Sub addbutton Dim n As Integer 0 Fo
  • 在qt中执行java文件

    我正在尝试在 qt 中执行 java 文件 这是我的 java 文件代码 import android appwidget AppWidgetManager import android appwidget AppWidgetProvide
  • 检测网站访问者是否安装了工具栏,例如。使用 JavaScript 的 Google 工具栏

    我正在开发一个经常使用弹出窗口的在线教育网站 这是第三方提供商的学习管理系统的一部分 因此不可能改变其工作方式 我们接到很多帮助台电话 询问用户在操作系统 浏览器设置和其他工具栏中遇到的弹出窗口拦截器问题 我正在使用 javascript
  • Python 的 time.sleep() 方法等待的时间不正确

    我已经遇到过这个问题好几次了 重新启动 python 似乎可以工作 或 ipython 但是 例如 这是运行以下代码的一种可能的输出 startt time time for i in range 4 time sleep 1 print
  • NUnit 的 log4Net 问题(尝试过 v2.5.7、2.5.2、2.4.8、2.4.7)

    针对生产代码程序集运行 NUnit 时 我收到错误 请参阅帖子底部 生产代码程序集引用了内部使用 log4net 的第三方框架 具体来说 这是 SimplyAccounting 的 SDK 它使用的log4net版本是1 2 9 0 在我们