我应该在哪里放置我的属性文件进行测试?

时间:2012-03-17 14:27:25

标签: java web-applications junit classpath

我在此文件夹中有一个属性文件:

/src/webapp/WEB-INF/classes/my.properties

我正在使用:

加载它
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream is = classLoader.getResourceAsStream("/my.properties");

Properties props = new Properties();

try {
    props.load(is);
} catch (IOException e) {
    e.printStackTrace(); 
}

String test = props.getProperty("test");

现在这在我的Spring mvc应用程序中运行良好。

但是当我为此创建测试时,它失败了,我假设因为应用程序加载它的方式不是使用web-inf / classes,因为它只是一个类而不是一个Spring Web应用程序。

那么我在哪里放置我的属性文件,以便在我的junit测试运行时,拾取属性文件?

另外,对于我的网络应用,除了/ web-inf / classes之外,默认类路径中还有哪些其他文件夹?

3 个答案:

答案 0 :(得分:6)

如果您将my.properties放在/src/test/resources下,它将作为测试的常规资源。

答案 1 :(得分:1)

我会删除classLoader.getResourceAsStream("/my.properties");中的路径(/),因为类加载器在应用程序的根目录中启动。将文件保留在原来的相同位置。然后改为

String filename = "my.properties"; 
InputStream is = classLoader.getResourceAsStream(filename);  //for web-app
if(is == null)
    is = new FileInputStream (filename);        //for testing

答案 2 :(得分:0)

通常我将属性文件直接放在src文件夹中。