循环引用时 .NET 单元测试中的 StackOverflow

2024-03-25

当我注意到以下情况时,我正在测试其他循环参考电阻:

    public class Foo
    {
        private Bar myBar = new Bar();
    }

    public class Bar
    {
        private Foo myFoo = new Foo();
    }

    [Fact]
    public void CircularReferenceTest()
    {
        var foo = new Foo();
        var bar = new Bar();
    }

导致 XUnit 运行程序停止并控制台日志:

主动测试运行被中止。原因:由于 StackOverflowException,进程被终止。

我在 MStest 上测试了它并得到了相同的结果。有没有解决的办法?这是一个错误,还是打算以这种方式停止执行?


你没有进行循环引用。您正在创建一堆指向另一个的引用(如果您说是链接列表),最终会导致堆栈溢出异常,因为堆栈已满。

下面介绍如何进行循环引用。我不认为你可以将字段保留为私有,因为两个类必须在某个时刻以某种方式相互了解。 (即在某个时刻必须建立这种连接)

public class Foo
{
    public Bar MyBar { get; set; }  
}

public class Bar
{
    public Foo MyFoo { get; set; } 
}

public void CircularReferenceTest()
{
    var foo = new Foo();
    var bar = new Bar();

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

循环引用时 .NET 单元测试中的 StackOverflow 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • Keras:如何将学习率输出到张量板上

    我添加了一个回调来衰减学习率 keras callbacks ReduceLROnPlateau monitor val loss factor 0 5 patience 100 verbose 0 mode auto epsilon 0
  • Sonata 管理仪表板:配置每个实体的操作

    我正在使用SonataAdminBundle作为 Symfony2 v2 0 x 支持的网站管理界面的基础 默认情况下 添加到 SonataAdmin 仪表板的实体具有以下操作 add list 这对于大多数实体来说效果很好 但是该网站有一
  • 如何禁用文本区域的可调整大小属性?

    我想禁用 a 的可调整大小属性textarea 目前 我可以调整大小textarea通过单击右下角textarea并拖动鼠标 我怎样才能禁用这个功能 以下 CSS 规则禁用调整大小行为textarea http www w3 org wik
  • elm:读取文件内容

    有没有办法读取文件elm 我想要一个xml设置文件 我将在其中保留不同的设置并用 elm 读取它 我已经看过这个parser https github com toburger elm xml parser 但它期望xml内容 而不是路径
  • 解决方案构建顺序的保存位置

    我有一个包含多个项目 csproj 和 btproj 的解决方案 我实际上正在运行 BizTalk 2013 R2 因此我在 Visual Studio 2013 下进行开发 我有许多 powershell 脚本来部署我的应用程序 我必须增
  • 查找包含任意坐标列表的 voronoi 区域

    我正在使用一种算法 对于每次迭代 都需要找到一组任意坐标属于 Voronoi 图的哪个区域 即每个坐标位于哪个区域内 我们可以假设所有坐标都属于一个区域 如果这有什么区别的话 我还没有任何可以在 Python 中运行的代码 但伪代码如下所示
  • 将 OS National Grid 名称/代码添加到 R 中的网格

    我希望重新创建完整的地形测量国家网格 如此处所示https upload wikimedia org wikipedia commons f f5 Ordnance Survey National Grid svg https upload
  • 如何将工作表保存到新工作簿?

    我正在尝试将单个工作表保存到新工作簿 VBA 应该创建一个新工作簿 代码正在运行 新工作簿会弹出 其中包含所需的数据 并且 另存为 对话框窗口也会打开 但是当我选择名称并保存文件时 找不到新工作簿保持打开状态 Book1 或无论自动填充什么
  • 如何在Python中的recv之前找出socket中有多少字节?

    我有一个处理数据流的 TCP 它一次需要 4096 个字节 但我需要一种方法在接收之前找出整个套接字的大小 这样我就可以确定在切换套接字之前套接字将被读取多少次 它还会通知这是该套接字的最后一次接收 以便我可以在选择切换到另一个套接字 当它
  • SSL 启用:Windows 7 中的 Tomcat [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 当我尝试在 Windows 7 中启用 SSL 编辑 server xml 以启用端口 8443 作为 HTTPS 时 它没有被启用 有时它会显示 连
  • 列出两个日期之间的天数数组

    我想列出两个日期之间的一系列天数 我可以使用下面的代码列出一系列月份 我如何更改它以显示两个日期之间的每一天 require date date from Date parse 2011 05 14 date to Date parse 2
  • 自定义视图引擎中的 ASP.NET MVC 自定义属性

    假设我写了一个自定义属性 public class SpecialActionFilterAttribute System Web Mvc ActionFilterAttribute public override void OnActio
  • 如何将 grep 的输出通过管道传输到 cp?

    我有一个工作grep选择满足特定条件的文件的命令 我怎样才能从grep命令并将其通过管道传输到cp命令 以下尝试都失败了cp end grep r TWL exclude csv cp data lidar tmp ajp2 cp 之后缺少
  • 用于 SSO 的 PHP + ADFS(通过 OAuth) - 如何设置 ADFS?

    我正在尝试使用ADFS for SSO在一个项目上 该项目正在进行中PHP我正在尝试使用OAuth为了这 那么设置 ADFS 以与 OAuth2 配合使用的步骤是什么 我对 ADFS 一无所知 也无法在那里获得有关 OAuth2 设置的任何
  • 使用 -static-libgcc 和 -static-libstdc++ 编译 libconfig++

    我正在尝试编译库配置 http www hyperrealm com libconfig 版本 1 4 8 与 make LDFLAGS static libstdc static libgcc 但这似乎不起作用 因为我仍然得到 reade
  • 无法使用 Gradle 运行 TestNG

    我有一个使用 TestNG 运行的简单代码 但我无法使用 Gradle 运行相同的代码 因为它说找不到 main 方法 这并不奇怪 因为我使用的是注释 但在这样的场景下 如果我必须使用Gradle 如何运行代码 请注意 我对 Gradle
  • 如何根据 Django 中的表单输入向用户显示生成的图像?

    我目前正在使用对象的属性通过 matplotlib 生成图像 并且能够创建一个在 HttpResponse 中显示所述图像的视图 我使用以下代码片段来执行此操作 http wiki scipy org Cookbook Matplotlib
  • Pandas - KeyError:列不在索引中[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 import pandas as pd import quandl df quandl get WIKI GOOGL p
  • 如何将 MKMapView 用户位置蓝点更改为所选图像?

    是否可以更改blue dot https i stack imgur com ELWID jpg这表明用户的位置MKMapView到图像 例如一辆小汽车或任何 png image In the 查看注释 的方法MKMapViewDelega
  • 循环引用时 .NET 单元测试中的 StackOverflow

    当我注意到以下情况时 我正在测试其他循环参考电阻 public class Foo private Bar myBar new Bar public class Bar private Foo myFoo new Foo Fact publ