独立于物理XML文件的单元测试XML
我的问题是: 在JUnit中,如何在TestSUT下为系统设置xml数据,而不使SUT从物理存储在文件系统上的xml文件中读取 背景: 我得到一个XML文件,其中包含创建发票的规则。我的工作是将这些规则从XML转换为Java对象,例如。 如果在我的XML文件中有一个如下的标记,表明在30天之后,事务将无法开票独立于物理XML文件的单元测试XML,xml,junit,stax,Xml,Junit,Stax,我的问题是: 在JUnit中,如何在TestSUT下为系统设置xml数据,而不使SUT从物理存储在文件系统上的xml文件中读取 背景: 我得到一个XML文件,其中包含创建发票的规则。我的工作是将这些规则从XML转换为Java对象,例如。 如果在我的XML文件中有一个如下的标记,表明在30天之后,事务将无法开票 <ExpirationDay>30</ExpirationDay> 这将转换为Java类,比如ExpirationDateInvoicingRule 我有一个类
<ExpirationDay>30</ExpirationDay>
这将转换为Java类,比如ExpirationDateInvoicingRule
我有一个类InvoiceConfiguration,它应该接受XML文件并创建*InvoicingRule对象。我正在考虑使用StAX解析InvoiceConfiguration中的XML文档
问题:
我想对InvoiceConfiguration进行单元测试。但我不希望InvoiceConfiguration在文件系统上物理地读取xml文件。我希望我的单元测试独立于任何物理存储的xml文件。我想在内存中创建一个xml表示。但是StAX解析器只接受FileReader,或者我可以使用File对象重构代码以接受Reader而不是打开文件。如果您想坚持在单元测试中不访问文件的规则,那么文件打开可以单独完成,并且在很大程度上是不稳定的——但这没关系,因为这只是一行,您不会真的弄错 重构您的代码,以获取读取器,而不是打开文件。如果您想坚持在单元测试中不访问文件的规则,那么文件打开可以单独完成,并且在很大程度上是不稳定的——但这没关系,因为这只是一行,您不会真的弄错 下面是一些测试的示例,这些测试同时使用XMLUnit和自定义框架来处理XML。该框架使用StAX将XML映射到javapojo 没有外部依赖关系,测试覆盖率约为90%
下面是一个使用XMLUnit和自定义框架处理XML的许多测试的示例。该框架使用StAX将XML映射到javapojo 没有外部依赖关系,测试覆盖率约为90% 谢谢你们的帮助。 另一个好的来源是这个链接: 这是Baq Haidri的答案 ---原始消息--- 发件人:Baq Haidri[邮寄地址:bhaidri@....] 我在Wrox publishing的一本名为“Professional XML”的书中发现了这一点: 谢谢你们的帮助。 另一个好的来源是这个链接: 这是Baq Haidri的答案 ---原始消息--- 发件人:Baq Haidri[邮寄地址:bhaidri@....] 我在Wrox publishing的一本名为“Professional XML”的书中发现了这一点:
>
>public void parseString(String s) throws SAXException, IOException
>{
> StringReader reader = new SringReader(s);
> InputSource source = new InputSource(reader);
> parser.parse(source);
>}