2012-03-17 3 views
2

У меня есть файл свойств, что я в настоящее время в этой папке:Где я должен поместить свой файл свойств для тестов?

/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, поскольку это просто класс, а не весеннее веб-приложение.

Итак, где я могу поместить свой файл свойств так, чтобы при выполнении моих тестов junit был загружен файл свойств?

Также, для моего веб-приложения, какие другие папки находятся в пути класса по умолчанию, отличном от/web-inf/classes?

+1

Я считаю, что ваш путь: '/ SRC/WebApp/WEB-INF/классы/my.properties' –

ответ

5

Если вы положили my.properties под /src/test/resources в , он будет доступен как обычный ресурс для ваших тестов.

0

Обычно я помещаю файлы свойств непосредственно в папку src.

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 
+0

, но как же он работает с/в веб-приложение? смущенный? – Blankman

+0

Классный загрузчик уже выполняет поиск в корне, так что/не имеет никакого значения. На другом, если вы попробуете 'class.getResourceAsStream (имя_файла)' ищет ресурс в том же пакете (папке) как класс, поэтому в этом случае/будет необходимо, если файл был расположен в корне. – Kennet

Смежные вопросы