用于读取JSON文件的JUnit测试

kek*_*nen 7 java file-io junit json maven

假设我想为Java类编写一个测试,它将提供一种读取和解析外部文件的方法(确切地说,文件将是JSON,我将使用Jackson).

此外,我有一些我要解析的JSON文件的例子,我也有一个模糊的想法,这个SomeMagicalReader.readPony("path/to/location/pony.json")方法应该返回什么样的Java对象; 如果我设法readPony返回某种类型PonyObject,我想有一个想法如何测试生产PonyObject是我期望的.

我提出的问题涉及为readPony测试数据提供功能.我可能会考虑这种方式,但是(1)是否有一种惯用的"Java + Junit"方式呢?(=测试读取外部文件的方法?)在测试代码中将示例文件的内容作为String变量进行复制?(它们相当短,但最终看起来仍然会很快看起来丑陋.)将示例JSON 放在某个地方readPony用路径调用?(这听起来更明智.)(2)如果我的测试是在Maven风格的测试包层次结构中组织的,那么放置这样的外部JSON测试文件会是什么规范的地方,例如src/test/java/com/stuff/app/package/SomeMagicalReaderTest.java

m4r*_*tin 10

根据maven的标准目录布局,我建议您将JSON测试文件放入其中,src/test/resources因为它们测试资源.请注意,您可以(并且应该)在resources文件夹下组织您自己的文件夹层次结构(其他开发人员会发现在修复或添加其他测试时更容易找到特定的测试资源).

所以,是的,你将与你的JSON文件结束的地方,但不是在任何地方,如果你自己的测试资源层次是不够好(例如,如果你认为你的包结构非常有意义的包名有组织的,下面就为您的测试资源层次ISN"一个坏主意).