[英]Generate XML or JSON given a C# class
希望這不會違背“推薦或找到工具,庫或喜歡的非現場資源”主題規則,但無論如何這里都是可行的。
如果您進行數據庫開發,那么您可能會熟悉現有的工具,這些工具可將示例數據放入表中以進行測試。
我想知道是否有任何辦法[0]可以采用標記為Serializable的模型類,並從裝飾有適當屬性的屬性中生成示例XML或JSON。
在SO和其他地方,都存在關於從JSON或XML生成C#類的許多問題,但是我想要的卻略有不同。
這里的特定用例是,我正在等待其他開發人員的JSON輸出,並且想知道是否有一種方法可以使我快速入門,因此無論使用哪種方法,都可以使用此方法測試我的代碼。
我只是使用標准的XML序列化程序和JSON.NET庫,但是可以根據需要切換到其他內容。
[0] 我知道我可以編寫可以使用Reflection實例化類的代碼,然后反射到該實例並以這種方式編寫XML或JSON,但這本身就是一個大項目。 我希望在.NET Framework或某種FOSS工具中采用預先存在的方式
您可以使用一些單元測試工具來幫助您。
例如, nBuilder可以用示例數據填充屬性,然后將其序列化為json。
void Main()
{
var samplePerson = Builder<Person>.CreateNew().Build();
var json = JsonConvert.SerializeObject(samplePerson);
//outputs {"Name":"Name1","Age":1} to the screen
json.Dump();
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
這是linqpad代碼: http ://share.linqpad.net/prur3p.linq
但是,這顯然不會使用您的屬性屬性來提供幫助。
更詳細的示例:
var hierarchySpec = Builder<HierarchySpec<Category>>.CreateNew()
.With(x => x.AddMethod = (parent, child) => parent.AddChild(child))
.With(x => x.Depth = 5)
.With(x => x.MaximumChildren = 10)
.With(x => x.MinimumChildren = 5)
.With(x => x.NamingMethod = (cat, title) => cat.Title = "Category " + title)
.With(x => x.NumberOfRoots = 10).Build();
Builder<Category>.CreateListOfSize(2500).BuildHierarchy(hierarchySpec);
( https://github.com/garethdown44/nbuilder/#hierarchy-generation )
附帶說明:
除非您要進行“第2端”測試,否則您的問題的確使我認為您可能對另一個組件具有硬編碼依賴性。 您應該能夠測試代碼而無需准備其他組件(尤其是來自其他開發人員的情況)。 如果您還不熟悉它,我建議您閱讀Martin Fowler的關於使用模擬來模擬相關組件行為的討論 。 如果您只是在進行端到端測試,並且對單元測試/模擬等一無所知,那么請忽略本段。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.