循环引用时 .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 的相关文章

随机推荐

  • 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