无法从junit spring加载属性

时间:2015-06-05 13:25:26

标签: spring maven junit filenotfoundexception spring-test

我有一个项目,当通过java -jar命令运行时工作得很好但是如果我通过junit运行它无法加载使用spring context加载的属性文件.Below是目录结构

/src
 /main
  /java
  /resources
    /config
      /export
        export.properties
    context.xml
    startJob.bat
 test
  java
    execution
     Test1

context.xml包含以下内容:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>file:config/export/export.properties</value>
            </list>
         </property>

我的测试课程如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:context.xml"})
public class Test1 {

@Autowired
Export export;
    @org.junit.Test
    public void test2() {
        export.report();

当我运行上面的junit测试用例时, 我得到以下错误:

Caused by: java.io.FileNotFoundException: config\export\export.properties (The system cannot find the path specified).

我甚至尝试过处理从src / main / resources到src / test / resources的所有资源,但它仍然失败并出现相同的错误。 我相信这是每个​​人都会使用的东西,而且必须非常直接......

编辑1 我创建了一个单独的test-context.xml并将其放在源代码中并使用classpath修改它以加载文件:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:config/export/export.properties</value>
            </list>
         </property>.

在这个春天之后能够加载属性但是在进一步处理时我在记录器中有以下代码:DOMConfigurator.configure("config/export/export_log.xml")但是"java.io.FileNotFoundException: H:\workspaces\export\job\config/export/export_log.xml".失败并且它如何选择这条路径?

1 个答案:

答案 0 :(得分:0)

我能够通过配置日志文件解决此问题,如下所示:

DOMConfigurator.configure(JobLogger.class.getClassLoader().getResource("config/export/export_log.xml"))