【发布时间】:2013-06-18 11:06:46
【问题描述】:
在编写处理 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 有语法错误,它们会立即告诉我等等
你怎么看?文件访问真的很糟糕吗?如果是这样:为什么?如果不是,为什么可以?
【问题讨论】:
-
你可以在 test/resources 文件夹中存放所有这些东西。如果您在其中有某种 XML 模板,您接下来可以对其进行参数化,那就更好了。小 XML 字符串或使用凹槽来表示字符串不是好主意(在我看来......)也许 mock 会有所帮助,这取决于
标签: unit-testing