gpt4 book ai didi

c# - 用于生成对象初始化代码的调试器可视化器

转载 作者:可可西里 更新时间:2023-11-01 08:25:40 24 4
gpt4 key购买 nike

我们有一个 bug 需要修复,就像任何优秀的 TDD 从业者一样,我想首先编写一个失败的测试来表示 bug。该错误存在于将相当复杂的类型作为输入的方法中。只有当复杂类型设置了特定的属性值组合时,该错误才会重现。

到目前为止,我已经重现了这个错误,并且在调试器中,可以查看复杂类型的运行时值。现在我需要在我的单元测试的“安排”部分中创建该复杂类型,以便我可以将它提供给单元测试的“Act”部分中的错误方法。

我可以手动编写一个大对象初始化程序代码块,例如以下代码:

var cats =
new List<Cat>
{
new Cat {Name = "Sylvester", Age = 8},
new Cat {Name = "Whiskers", Age = 2}
};

甚至是这样的:

var cats = new List<Cat>();
var cat1 = new Cat();
cat1.Name = "Sylvester";
cat1.Age = 8;
cats.Add(cat1);
var cat2 = new Cat();
cat2.Name = "Whiskers";
cat2.Age = 2;
cats.Add(cat2);

那里没什么特别的。唯一的问题是“手工”部分——在我的例子中,复杂类型并不像上面的例子那么简单。

我还可以在调试器中使用任何内置的调试器可视化工具查看对象。所以我想我会编写一个自定义调试器可视化工具,它会为我生成对象初始化代码。要使用它,我会在调试器中重现问题,调出 QuickWatch 窗口并选择我的自定义可视化工具。

另一种选择是编写一个自定义序列化实现,该实现将“序列化”为一个对象初始化代码块。使用它会比仅仅拉起 QuickWatch 窗口更难一些,但这可以工作。

在我自己解决这个问题之前,有没有人做过这样的事情?介意分享代码片段吗?或者有人会建议另一种方法吗?

附言在我的例子中,对象的类型是抽象基类的子类。只是想提一下。

最佳答案

这是一个名为 Object Exporter 的工具,它完全可以满足您的需求,它将从调试窗口中的任何对象生成 C# 初始化代码:

https://visualstudiogallery.msdn.microsoft.com/c6a21c68-f815-4895-999f-cd0885d8774f

包含更多信息的博文:

http://www.omarelabd.net/exporting-objects-from-the-visual-studio-debugger/

关于c# - 用于生成对象初始化代码的调试器可视化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com