В моем коде я создаю объект File на основе относительного пути к файлу в папке с исходным кодом.Все работает отлично при запуске этого кода под Tomcat.
Когда я запускаю точно такой же код, как JUnit / интеграционный тест, используя STS / Eclipse Run ... и выбираю JUnit, тест завершается неудачно, потому что он не может найтифайл, основанный на том же относительном пути, который работал, когда код выполнялся под Tomcat.
Вот как файл пытается быть создан в коде:
new File(getClass().getResource(relatativePathToTheFile).toURI())
Я пытался решитьэто сначала путем определения текущего пути при запуске теста junit с использованием этого кода:
System.out.println(this.getClass().getClassLoader().getResource(".").toURI().toString());
Это говорит мне, что текущая папка должна быть c: \ CODE \ myProjectName \ bin \ main, когдавыполнение кода как часть интеграционного теста.
файл, к которому я пытаюсь получить доступ из кода, находится здесь: c: \ CODE \ myProjectName \ src \ main \ webapp \ WEB-INF \ resources \ nameOfTheFile.test
Исходя из этого, я обновил свой относительный путь, используемый в выполняемом коде, следующим образом: /../../src/main/webapp/WEB-INF/resources/
"/../../" я пытаюсь пройти дваПройдите к корневой папке и оттуда начните навигацию к папке ресурсов.По какой-то причине даже это обновление не решило проблемы - я почти уверен, что путь правильный.
Возможно, по какой-то причине путь просто недоступен при запуске модульных тестов.Может быть, есть некоторая конфигурация Gradle или конфигурация STS / Junit, чтобы разобраться в этом.
Все мои интеграционные тесты находятся в папке ../src/integrationTest.Весь мой код находится в структуре папок, начиная с ../ src / main /