[英]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.