Ant build не может найти.txt файлы в Eclipse
Я работаю над проектом Java в Eclipse и в настоящее время пишу для него модульные тесты.
Чтобы получить красивую интерактивную сводку результатов теста, я создаю файл build.xml, выполнив
Файл >> Экспорт >> Файлы сборки Ant >> "Проверка моего проекта" и нажатие кнопки "Готово"
Затем я настраиваю файл сборки, используя представление "Изменить конфигурацию" в Eclipse, и выбираю тесты (наборы), которые я хочу запустить и завершить с помощью junitreport.
Это прекрасно работает, за исключением небольшого факта, что файлы конфигурации.txt, которые у меня есть, не могут быть найдены при запуске через Ant. Если я запускаю src файлы тестов, все работает как положено.
Я читаю файл в InputStream, как это
//CONFIG = "CONFIG/config.txt"
public static InputStream getConfigInputStream() throws IOException{
File file = new File(CONFIG);
return new FileInputStream(file);
}
Вот пример вывода с консоли:
NameValidationTest:
[junit] Running se.st.dsg.pc.test.junit_test.tests.unit_tests.NameValidationTest
[junit] Tests run: 4, Failures: 2, Errors: 1, Skipped: 0, Time elapsed: 0,123 sec
[junit] Error:
[junit] java.io.FileNotFoundException: CONFIG\config.txt (The system cannot find the file specified)
[junit] at java.io.FileInputStream.open0(Native Method)
[junit] at java.io.FileInputStream.open(Unknown Source)
[junit] at java.io.FileInputStream.<init>(Unknown Source)
[junit] at se.st.dsg.input_stream_source.InputStreamSource.getConfigInputStream(InputStreamSource.java:26)
[junit] at se.st.dsg.core.syst_params.SystParamsParser.parseConfig(SystParamsParser.java:40)
[junit] at se.st.dsg.pc.test.junit_test.tests.unit_tests.NameValidationTest.setup(NameValidationTest.java:20)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[junit] at java.lang.reflect.Method.invoke(Unknown Source)
[junit] at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
[junit] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[junit] at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
[junit] at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
[junit] at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
[junit] at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:38)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:535)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1182)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1033)
[junit] Test se.st.dsg.pc.test.junit_test.tests.unit_tests.NameValidationTest FAILED
Я хотел бы подчеркнуть, что эта ошибка НЕ возникает при нормальной компиляции и запуске в Eclipse, и что тесты, которые не читают файл.txt, работают должным образом при использовании Ant. Нужно ли сообщать Ant, где находятся файлы, или есть какой-то другой способ решения этой проблемы?