2015-04-29 14 views
0

Когда я запускаю тесты JUnit с использованием ClasspathSuite, и один из модульных тестов хочет загрузить файл с использованием относительного пути, он будет использовать базовый путь ClasspathSuite вместо базового пути модульного теста.Устранение относительного пути при запуске ClasspathSuite

Так, например, если тестовый модуль пытается загрузить файл, как это:

File file = new File("src/test/resources/test.xml"); 

он будет пытаться загрузить файл относительно расположения ClasspathSuite и не относительно места испытания блока.

Есть ли способ изменить это?

ответ

0

Я предполагаю, что вы используете затмение. Используйте MYClass.class.getClassLoader().getResourceAsStream(<fileName>). Как и в ресурсах, getClassLoader() сможет легко найти местоположение файла, если вы используете eclipse. Ваш код будет,

File file = new File(MYClass.class.getClassLoader().getResourceAsStream("test.xml")); 
+0

Я использую eclipse, но я не хочу, чтобы мой код зависел от него. Кроме того, 'File' не принимает' InputStream' как аргумент конструктора. –

+0

Да, пропущен пункт «поток». Измените 'inputstream' на строку, как показано на странице http://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string :). До сих пор я знаю, что он должен работать во всех средах, не особенно для затмения. – Abhishek

+0

Я не хочу менять свой код, чтобы просто запустить тест в ClasspathSuite, когда он работает нормально, когда я запускаю тестовый автономный. Что еще более важно, я впоследствии хочу проанализировать xml как «Файл», поэтому «String» мне не очень-то нравится. –

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