2012-02-16 2 views
2

Я пытаюсь запустить JUnit тестов из приложения, которое разрабатывается в Eclipse, как так:Запуск тестов JUnit программно вне их проекта Eclipse,

JUnitCore junitCore = new JUnitCore(); 
ClassLoader cl = Main.class.getClassLoader(); 
Class<?> test = cl.loadClass("test.TestCase1"); 
Result r = junitCore.run(test); 

Это прекрасно работает, но если тест должен используйте некоторые файлы, я получаю FileNotFoundException. Выполняя тот же тест в проекте Eclipse, тест не имеет такой ошибки. Я думаю, это связано с тем, что рабочий каталог JVM (определенный в свойстве user.dir) не совпадает с проектом Eclipse. Насколько я знаю, я не могу изменить user.dir в запущенной JVM.

Что можно сделать, чтобы изменить это поведение? Является ли мой единственный способ запустить новую JVM с тем же рабочим каталогом, что и проект Eclipse? Если да, то как я могу это сделать, желательно без использования таких инструментов, как Ant?

редактировать: Вот пример теста, который проходит в рамках проекта Eclipse, и генерирует FileNotFoundException, когда я запускаю его программно вне проекта:

@Test 
public void test() throws Exception { 
    FileInputStream fstream = new FileInputStream("test1.txt"); 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    assertEquals("file content", br.readLine()); 
} 
+0

Не могли бы вы показать код snippest, который загружает ваши файлы? – Anton

+0

@Umar Вы имеете в виду пример теста, который загружает файл? Я отредактирую это для вас. – aperez

+0

Просто интересно узнать, почему вы хотите написать приложение для запуска junit, когда у вас есть junit-плагин по умолчанию в eclipse? –

ответ

0

Попробуйте этот код

new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("filename"))); 

Если ваш файл находится в том же каталоге, что и класс java, он должен быть загружен.

Update

В этом случае попробуйте указать рабочий каталог при запуске JUnits тесты

-Duser.dir=somedir 
+0

Благодарим вас за ответ. К сожалению, я не могу изменить источник проекта, включая тесты. – aperez

0

Попробуйте получение текущего каталога вашего JUnit Test находится в, а затем создать новый файл навигации к test1.txt

String currentDirectory = new File("").getAbsolutePath(); 

FileInputStream fstream = new FileInputStream(currentDirectory+"\\XYZ\\test1.txt"); 
Смежные вопросы