0
我有一个读取资源文件的类方法,但是当我试图用单元测试运行这个类时,找不到文件。找不到来自UnitTest的ClassLoader资源
如果我要部署应用程序战争或只是使用maven从eclipse运行它,一切正常。
文件位置(不知道是否需要的src /测试/资源,增加它后,才遇到的问题,但并没有帮助):
src/main/resources/
-> com
-> xxxx
-> xxxx_portal
-> web
-> server
-> servlet
-> reports -> Logo.png
src/test/resources/
-> com
-> xxxx
-> xxxx_portal
-> web
-> server
-> servlet
-> reports -> Logo.png
相关类代码:
package com.xxxx.xxxx_portal.web.server.servlet.reports;
public class ModuleReports {
private static final String LOGO_IMAGE_PATH = "/com/xxxx/xxxx_portal/web/server/servlet/reports/Logo.png";
...
private static InputStream getLogoImage() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream is = classLoader.getResourceAsStream(LOGO_IMAGE_PATH); //Problem here, InputStream is null. It should not be null.
return is;
}
...
}
如果可能的话,我希望不要碰这个类及其方法。你是否说删除斜杠将使单元测试工作?正如我所说的,Class ModuleReports在没有从单元测试运行时可以正常工作。 – CrazySabbath
值得一试。您可能还想更新您的问题并显示您的应用程序的构建方式;也就是说,显示Maven pom.xml或Ant build.xml。 – VGR
删除斜杠工程。虽然这是一个奇怪的行为,因为部署的应用程序工作正常(无论是否启动斜线),而单元测试仅在删除开始斜线时才起作用。 – CrazySabbath