編寫處理XML的單元測試(例如,測試讀取/生成XML的類)時,我用單元測試旁邊的單獨文件將我的斷言結果XML-String/my XML XML字符串寫入。比方說,我有一個「MyTransformer」類將一種XML格式轉換爲另一種格式。然後我會在同一個包創建三個文件都:單元測試中的文件訪問不好?
- MyTransformerTest.java
- MyTransformerTestSampleInput.xml
- MyTransformerTestExpectedOutput.xml
然後我的說法,可能是這樣的(簡化的僞代碼爲了簡單起見):
Reader transformed = MyTransformer.transform(getResourceAsStream("MyTransformerTestSampleInput.xml")));
Reader expected = getResourceAsStream("MyTransformerTestExpectedOutput.xml");
assertXMLEqual(expected, transformed);
然而,一個colle ague告訴我,我在這個單元測試中的文件訪問是不可接受的。他建議創建一個包含我的XML文件內容的字符串常量(private static final String),可能在單獨的groovy類中,因爲多行字符串的好處而不是將XML文件寫入文件。
我不喜歡字面字符串常量的想法,因爲即使我在groovy中有多行字符串,我仍然會丟失語法突出顯示和XML編輯器的所有其他有用功能,這些功能會立即告訴我,如果我的XML有語法錯誤等。
您怎麼看?文件訪問是否真的很糟糕?如果是這樣:爲什麼?如果不是,爲什麼它可以嗎?
你可以hava測試/資源文件夾你持有這些東西。如果你在那裏有一些你可以參數化的XML模板會更好。小XML字符串或使用凹槽來表示字符串不好主意(在我看來......)也許模擬會有所幫助,這取決於 – Damian0o