在编写处理 XML 的单元测试时(例如测试读取/生成 XML 的类),我曾经将我的断言结果 XML-String / 我的输入 XML 字符串写入单元测试旁边的单独文件中。假设我有一个类“MyTransformer”,可以将一种 XML 格式转换为另一种格式。然后我会在同一个包中创建三个文件:
- MyTransformerTest.java
- MyTransformerTestSampleInput.xml
- MyTransformerTestExpectedOutput.xml
那么我的断言可能看起来像这样(为简单起见,简化了伪代码):
Reader transformed = MyTransformer.transform(getResourceAsStream("MyTransformerTestSampleInput.xml")));
Reader expected = getResourceAsStream("MyTransformerTestExpectedOutput.xml");
assertXMLEqual(expected, transformed);
然而,一位同事告诉我,我在这个单元测试中拥有的文件访问权限是不可接受的。他建议创建一个包含我的 XML 文件内容的文字字符串常量(私有静态最终字符串),可能在一个单独的 groovy 类中,因为多行字符串的好处而不是将 XML 文件写入文件。
我不喜欢文字字符串常量的想法,因为即使我在 groovy 中有多行字符串,我仍然松散了语法突出显示和我的 XML 编辑器的所有其他有用的功能,这些功能可以立即告诉我我的 XML 是否有语法错误等。
你怎么看?文件访问真的很糟糕吗?如果是这样:为什么?如果不是,为什么可以?