在运行junit时引用jar文件中的图像

时间:2015-10-29 09:02:40

标签: java junit

我一直在想使用ImageMagic(im4java)来比较已知的良好页面渲染与存储的好页面。

我在测试网站上有这个工作,但我的所有图像(好的,坏的和不同的)都存储在我的c:\ temp文件夹中。我一直在想要将“预期”图像保存在项目文件夹结构中,因此当项目签出时,预期的图像就在那里。

(不是说这是一个很好的解决方案,这只是我一直在玩的东西。)

所以我的测试存储在 的 /src/test/java/my.screen.test/compareTest.java 而我的“预期”形象 的 /masterImages/test.png

我尝试了各种方法来引用它:

我在构建路径中包含了masterImages,然后尝试使用 InputStream input = getClass()。getResourceAsStream(“/ masterImages / googleHomePage1.png”); (然后我以为我可以简单地使用input.toString()传递给im4java - 但是InputStream给了我nullpointer异常) 我还尝试从构建路径中删除masterImages并尝试这种方式。

我也试过了 String path = getClass()。getClassLoader()。getResource(“masterImages / googleHomePage1.png”)。toString(); 再次,空指针。我知道有一些愚蠢的东西,我没有在这里看到,就像我说这开始是在我玩,但它现在让我烦恼为什么我不能让它工作。

对我所缺少的任何见解都非常感激。

2 个答案:

答案 0 :(得分:0)

从 - In java, how do you retrieve images from a jar file?

确实很简单:您使用getResource()java.lang.Class中的各种java.lang.ClassLoader方法。例如,在您的应用中,您可以写

treeURL = getClass().getResource("/images/tree.png");

这会在jar文件根目录下的images目录中找到该文件。关于getResource()方法的好处是,无论文件是否在jar中它们都可以工作 - 如果images目录是磁盘上的真实目录,这仍然可以工作(只要图像的父级是你的课程路径的一部分。)

答案 1 :(得分:0)

感谢所有人。我想我有这个排序。事实证明我必须将包含图像的文件夹添加到类路径中 - 我错误地认为,因为我有masterImages / otherFolderName,如果我包含masterImages,则包含otherFolderName中的任何文件。事实证明并非如此(至少对我来说。)