9

我有一个场景,我有一个从数据库加载的相当复杂的对象。

该对象有几个嵌套对象。在调试时,我找到了一个我想在单元测试中使用的对象的实例。现在我必须手动创建这个对象。由于它相当复杂,因此需要一段时间。

如果有办法告诉监视窗口将此变量输出到文本窗口(或剪贴板),我的单元测试时间会更好。

似乎所有需要的信息都在监视窗口中。

我不希望它创建 using 语句或任何类似的东西,只需使用它拥有的类信息并创建new语句(嵌套与我的对象一样多的级别)。

有没有这样的工具?(如果不是,也许我只是找到了发财的方法?)

4

1 回答 1

2

我知道没有这样的工具......这样做非常复杂,因为:

  • 对象可能有循环引用,因此你可以去的深度没有限制
  • 可能有对单例对象的引用
  • 可能有对在构造函数上带参数的对象的引用,它怎么知道如何构造对象?
  • 或对没有公共构造函数的对象的引用,而是由工厂构建的
  • 或对 COM 对象的引用
  • 或对仅在运行时才有意义的对象的引用:例如文件流

一种简单的解决方案:使对象可序列化(例如,xml 或 json),对其进行序列化,将序列化的字符串复制到您的单元测试中,然后在单元测试中对其进行反序列化。

不是那么简单的解决方案:实现调试器可视化器,带有可视化器对象源: 调试器可视化器和“类型未标记为可序列化”

这样您就可以创建一个窗口,并显示序列化的对象......您可能必须使用反射来读取所有对象属性和子对象等等。

于 2012-11-28T17:26:18.217 回答