当前位置: 首页 > 面试题库 >

在JUnit @BeforeClass中加载属性文件

查宜修
2023-03-14
问题内容

我正在尝试执行JUnit测试期间从我的类路径中加载sample.properties,它在类路径中找不到文件。如果编写Java
Main类,则可以很好地加载文件。我正在使用以下ant任务执行我的JUnit。

public class Testing {
 @BeforeClass
    public static void setUpBeforeClass() throws Exception {   
        Properties props = new Properties();
        InputStream fileIn = props_.getClass().getResourceAsStream("/sample.properties");
        **props.load(fileIn);**
    }

}

JUnit:

<path id="compile.classpath">
        <pathelement location="${build.classes.dir}"/>
    </path>
    <target name="test" depends="compile">
            <junit haltonfailure="true">
                <classpath refid="compile.classpath"/>
                <formatter type="plain" usefile="false"/>
                <test name="${test.suite}"/>
            </junit>
        </target>
        <target name="compile">
            <javac srcdir="${src.dir}" 
                   includeantruntime="false"
                   destdir="${build.classes.dir}" debug="true" debuglevel="lines,vars,source">
                <classpath refid="compile.classpath"/>
            </javac>
            <copy todir="${build.classes.dir}">
                <fileset dir="${src.dir}/resources"
                         includes="**/*.sql,**/*.properties" />
            </copy>
        </target>

输出:

[junit] Tests run: 0, Failures: 0, Errors: 1, Time elapsed: 0.104 sec
[junit] 
[junit] Testcase: com.example.tests.Testing took 0 sec
[junit]     Caused an ERROR
[junit] null
[junit] java.lang.NullPointerException
[junit]     at java.util.Properties$LineReader.readLine(Properties.java:418)
[junit]     at java.util.Properties.load0(Properties.java:337)
[junit]     at java.util.Properties.load(Properties.java:325)
[junit]     at com.example.tests.Testing.setUpBeforeClass(Testing.java:48)
[junit]

问题答案:

您需要添加${build.classes.dir}compile.classpath

更新 :根据评论中的交流,事实证明classpath不是问题所在。而是使用了错误的类加载器。

Class.getResourceAsStream()根据加载类的类加载器查找资源的路径。事实证明,Properties该类是由与该类不同的其他类加载器加载的Testing,并且资源路径与该类加载器的关系不正确classpath。解决的办法是使用Testing.class.getResourceAsStream(...)而不是Properties.class.getResourceAsStream(...)



 类似资料:
  • 我在尝试添加

  • 问题内容: 我已经看过几次,并尝试了一些建议,但都没有成功(到目前为止)。我在以下路径上有一个maven项目和属性文件: 我正在尝试将其加载到Singleton类中以通过键访问属性 但是我在运行时遇到了NullPointerError的问题。我已经完成了所有可以想到的操作,但是无法找到/加载文件。 有任何想法吗? 堆栈跟踪: 问题答案: 您应该实例化您的对象。另外,您还应该使用以下路径加载资源文件

  • 我有两个项目,CarpoolDB和拼车。 CarpoolDB:包含后端的东西 拼车应用程序上下文。xml server.properties 我做了一罐carpoolDB和地方拼车应用程序 拼车:包含UI东西和后端联系人carpoolDB jar,并具有 carpool-application-context1.xml spring-servlet.xml 拼车。性质 现在,我有一个类com.on

  • 我无法加载位于jar (project.service.jar)中的db.properties,它被war文件(project-web.war)引用。输出war将jar放在we b-INF/lib/project . service . jar中。rest war也使用jar,它使用jar中的一些服务。当战争开始时,我无法加载位于服务的jar文件中的db.properties。prop文件具有要在

  • 问题内容: 我需要读取埋在我的包结构中的属性文件。 我已经尝试了一切,但无法解决。 最后,我的代码将在servlet容器中运行,但是我不想依赖任何容器。我写了JUnit测试用例,它需要在两个方面都能工作。 问题答案: 从包中的类加载属性时,可以使用 (添加所有必要的异常处理)。 如果你的类不在该程序包中,则需要稍微不同地获取InputStream: 相对路径(那些没有前导“/”)中该资源将相对于它

  • 问题内容: 我在程序中需要一个配置文件来存储一些信息,我看到了一些属性文件的示例,并试图使用它们,但是每当在NetBeans上尝试第二行时,我都会得到“ Package sortConfig不存在”,“ >预期”和“类型非法开始”。 问题是我已经看到大约10个示例都以相同的方式执行此操作,而我不知道发生了什么。 任何帮助,将不胜感激 我的.java类和我的属性文件位于src的同一包文件夹中 问题答