单元测试中的XmlSchemaSet验证

时间:2020-03-21 13:46:07

标签: c# unit-testing visual-studio-2019 xml-validation xmlschemaset

我有一个用于XML验证的c#库。在库中,我使用以下代码针对XSD验证XML。

 XmlSchemaSet schemaSheet = new XmlSchemaSet();
 schemaSheet.ValidationEventHandler += new ValidationEventHandler(XSDValidationHandler); 

 string[] xsdFiles = GetSchemas();
 foreach (string file in xsdFiles)
 {
      Stream fs = GetSchemaResource(anXsd); <---Get a XSD that is in a embedded resource
      var schema = XmlSchema.Read(fs, null);
      schemaSheet.Add(schema);
 }  
 schemaSheet.Compile();

如果从网站上使用此DLL,则一切正常。我可以向XmlSchemaSet添加50个以上的架构,并且不会在XSDValidationHandler上引发任何错误。整个过程不到一秒钟。

我创建一个单元测试项目来测试DLL。当我从测试中调用库,并且代码首次执行时,执行以下行:schemaSheet.Add(schema); ....尝试将XSD添加到schemaSheet大约需要30秒。当结束并添加下一个架构时,我在XSDValidationHandler上出现了错误(找不到schemalocation和其他类似的东西)。

为什么我有这个问题?库是否应该在Web项目和测试项目中以相同的方式工作?

另一件事...如果在测试进入schemaSheet.Add(schema)行时断开了网络连接,第一次不需要30秒...但是我在XSDValidationHandler上仍然有错误。

schemaSet.Add方法是否尝试在某处连接?或下载一些内容?

谢谢。

0 个答案:

没有答案