簡體   English   中英

Visual Studio /反射/序列化:是否可以從調試會話中導出值以將其用於單元測試?

[英]Visual Studio / Reflection / Serialization: Can I export values from a debug session to use them for unit testing?

我不得不編寫許多行代碼(請參閱此處: https : //dotnetfiddle.net/RiVx2E )以生成幾行示例數據。

在這種特定情況下,我可以通過這種方式手動導出輸出變量(請參閱Fiddler上的整個代碼):

new List { 
 { IDMacroTab = 1, IDTab = 1, IDSIot = 2 }
 { IDMacroTab = 1, IDTab = 2, IDSIot 1}
 { IDMacroTab = 1, IDTab = 2, IDSIot = 2}
 { IDMacroTab = 1, IDTab = 2, IDSIot = 3}
 { IDMacroTab = 2, IDTab = 1, IDSIot = 1}
 { IDMacroTab = 2, IDTab = 1, IDSIot = 2 }
 { IDMacroTab = 2, IDTab = 2, IDSIot = 1}
 { IDMacroTab = 2, IDTab = 2, IDSIot = 2}
 { IDMacroTab = 2, IDTab = 2, IDSIot = 3}
 { IDMacroTab = 3, IDTab = 1, IDSIot = 1}
 { IDMacroTab = 3, IDTab = 1, IDSIot = 2}
 { IDMacroTab = 3, IDTab = 2, IDSIot = 1}
 { IDMacroTab = 3, IDTab = 2, IDSIot = 2}
 { IDMacroTab = 3, IDTab = 2, IDSIot = 3}};

有什么解決方法可以將對象序列化為填充對象所需的c#代碼行?

Thrid解決方案:ObjectDumper.NET

我可能會為您提供另一種解決方案。 我在以前的項目中使用的是OmarElabd / ObjectExporter,但效果很好,但是某些類型存在問題(例如,DateTime的序列化在當時無法正常進行)。 性能也很關鍵:某些生成的對象的代碼行大小為5萬行(是的,請不要說這對於單個測試數據類來說太大了,但是...)。

畢竟,我開始編寫自己的ObjectDumper ,您可以在此處找到它作為NuGet程序包發布。 源代碼托管在github上,請隨時貢獻。 https://www.nuget.org/packages/ObjectDumper.NET/

ObjectDumper.NET的想法是,您基本上可以將任何 C#對象轉儲回C#初始化程序代碼。 與ObjectExporter(這是Visual Studio插件)相比,ObjectDumper是作為NuGet軟件包安裝的。 這使ObjectDumper可以在運行時使用 -不僅在代碼創建時使用。

用法示例:

[Fact]
public void SerializeObjectsToInitializerCode()
{
    // Create C# object
    var testObjects = new List<TestObject>
    {
        new TestObject {IDMacroTab = 1, IDTab = 1, IDSIot = 2},
        new TestObject {IDMacroTab = 1, IDTab = 2, IDSIot = 1},
        new TestObject {IDMacroTab = 1, IDTab = 2, IDSIot = 2}
    };

    // Pass it to ObjectDumper, choose DumpStyle.CSharp to generate C# initializer code
    var dump = ObjectDumper.Dump(testObjects, DumpStyle.CSharp);

    // Print to console, write to file, etc...
    _testOutputHelper.WriteLine(dump);
}

在此處輸入圖片說明

第一個解決方案(部分)

我發現這個問題可能非常有用,但僅適用於某種對象(例如列表)

在Visual Studio中調試C#代碼時,是否可以輕松導出xml,csv或文本格式的列表或字典?

在此處輸入圖片說明

在此處輸入圖片說明

第二解決方案

還有這個插件ObjectExporter(最新更新2017;在2018年檢查)

https://marketplace.visualstudio.com/items?itemName=OmarElabd.ObjectExporter

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM