2010-06-10 68 views
2

我的問題是:單元測試XML獨立的物理XML文件的

在JUnit中,如何設置的XML數據我被測系統(SUT)未做SUT從物理存儲上的XML文件中讀取文件系統

背景

我給它包含的規則創造發票的XML文件。我的工作是將這些規則從XML轉換爲Java對象,例如 如果是低於我的XML文件中的標籤,它表明一個爲期30天之後,交易不能開具發票

<ExpirationDay>30</ExpirationDay> 

將其轉換爲一個Java類,說ExpirationDateInvoicingRule

我有一個類InvoiceConfiguration應該接受XML文件並創建* InvoicingRule對象。我想使用StAX內InvoiceConfiguration

解析XML文檔

問題:

我想單元測試InvoiceConfiguration。但是我不希望InvoiceConfiguration從物理文件系統上的xml文件中讀取。我希望我的單元測試獨立於任何物理存儲的xml文件。我想在內存中創建一個xml表示。但是一個StAX解析器只需要FileReader(或者我可以用File Object來玩)

回答

0

謝謝你們的幫助。 另一個很好的來源是此鏈接:http://marc.info/?l=xerces-j-dev&m=86952145010437&w=2

這是BAQ Haidri

-----原始郵件-----答案從 :BAQ Haidri [郵寄地址:bh​​aidri @ .. ..]

我發現這在一個名爲 '專業XML' 由Wrox的出版書:

> 
>public void parseString(String s) throws SAXException, IOException 
>{ 
>   StringReader reader = new SringReader(s); 
>   InputSource source = new InputSource(reader); 
>   parser.parse(source); 
>} 

0

重構你的代碼來取代一個Reader而不是打開一個File。文件的打開可以單獨完成(如果你想堅持單元測試中不訪問文件的規則,那麼它基本上是不可測試的 - 但沒關係,因爲它只是一行,你不能錯誤地做到!)