将XML反序列化为C#对象:动态类、数据库刷新

将XML反序列化为C#对象:动态类、数据库刷新,c#,unit-testing,qa,xml-deserialization,restful-architecture,C#,Unit Testing,Qa,Xml Deserialization,Restful Architecture,在我的组织中,我们对API使用RESTful架构。我正在创建自动化的单元测试,可以在每夜构建之后运行。每个API调用都返回一个XML字符串,然后将其反序列化为一个C#对象。有没有一种方法可以动态生成这些类,或者我必须手动为每个将被实例化的对象创建一个类 其次,是否有一种方法可以将所有数据库值返回到运行这些测试之前的状态。我知道我可以设置一个测试数据库,数据库在每晚的某个时间刷新,但是我想知道是否有任何方法可以在测试项目本身进行测试之前将数据库返回到初始状态 最后,有人知道如何在我的名字前加一行吗

在我的组织中,我们对API使用RESTful架构。我正在创建自动化的单元测试,可以在每夜构建之后运行。每个API调用都返回一个XML字符串,然后将其反序列化为一个C#对象。有没有一种方法可以动态生成这些类,或者我必须手动为每个将被实例化的对象创建一个类

其次,是否有一种方法可以将所有数据库值返回到运行这些测试之前的状态。我知道我可以设置一个测试数据库,数据库在每晚的某个时间刷新,但是我想知道是否有任何方法可以在测试项目本身进行测试之前将数据库返回到初始状态

最后,有人知道如何在我的名字前加一行吗?lol:)

谢谢, Hernando Hoyos有两个选择

  • 检查DynamicXml()是否完全按照您的要求执行
  • 阅读对XPathDocument的响应,然后使用XPath对文档执行单元测试:

  • 第二个选项的好处是它与C的绑定不那么紧密,因为XPath是跨平台的,而DynamicXML只是C而已。

    除非有一些核心反射,否则您必须为每个XML对象创建类。幸运的是,VisualStudio附带了一个工具,您可以快速生成这些类


    考虑到您的任务单元测试,您始终可以跳过反序列化,并使用以更有针对性的方式查询您正在测试的特定内容的结果。如果你的每一个单元测试都关心结果的每一个字段,那么你无论如何都是做错了。在您的情况下,我肯定会使用linq,因为它将使您无需不断更新您的模型(似乎您没有重用应用程序模型)

    我看到的唯一问题是,使用这些类型的解决方案时,类是基于返回的xml生成的。因此,否定我正在进行的单元测试的目的……我认为我最好的选择是写出每一个类。