“无法在测试上下文中打开ServletContext资源”

时间:2016-09-29 12:44:02

标签: java spring unit-testing

我正在尝试用Spring创建一个单元测试。

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {MyConfig.class})
public class MyTest{
@Test
public void ...
}

要加载的类:

@ConfigurationProperties()
@PropertySource("config/myConfig.properties")
@Component
public class MyConfig {}

例外:

  

引起:org.springframework.beans.factory.BeanDefinitionStoreException:失败   解析配置类   [de.db.sus.converter.fia.business.algorithm.config.FiaConverterConfig];   嵌套异常是java.io.FileNotFoundException:无法打开   ServletContext资源[/config/myConfig.properties]

我找到了用于Web应用程序和/或基于xml的配置的资源,但不适用于传输它们。

如果我使用@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)启动应用程序,则会加载属性。但我不能为每个单元测试启动整个应用程序。

我已经验证该文件存在于test / resources / config /

目录中

2 个答案:

答案 0 :(得分:10)

似乎无法找到请求的属性。我建议这样做:

如果请求的属性文件在您的类路径中,您只需编写下一行即可解决上述问题:

@PropertySource("classpath:config/myConfig.properties")

答案 1 :(得分:0)

我如下配置了maven war插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
       <warName>${war-file-name}</warName>
        <warSourceDirectory>src/main/webapp</warSourceDirectory>
        <failOnMissingWebXml>false</failOnMissingWebXml>

        <webResources>
          <resource>
            <!-- this is relative to the pom.xml directory -->
            <directory>src/main/resources</directory>
          </resource>
        </webResources>
     </configuration>
</plugin>

将以下部分配置为与您的pom.xml

相关
 <webResources>
          <resource>
            <!-- this is relative to the pom.xml directory -->
            <directory>src/main/resources</directory>
          </resource>
 </webResources>

有关更多信息,请参见Adding and Filtering External Web Resources