Эта проблема - настоящий хедштейр. У меня есть некоторые тесты плагинов, которые выполняются через Maven / Tycho:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<configuration>
<providerHint>junit4</providerHint>
<useUIHarness>true</useUIHarness>
<dependencies>
<dependency>
<artifactId>org.eclipse.e4.rcp</artifactId>
<type>eclipse-feature</type>
</dependency>
</dependencies>
</configuration>
</plugin>
При выполнении этой конфигурации с Java 8 код new File("").getAbsolutePath()
возвращает путь, подобный C: \ Users \ Steffi \ AppData \ Local \ Temp \ app-294485596046597819 (некоторый временный путь).
При выполнении этой конфигурации с Java 11 возвращается путь, подобный S: \ git \ project \ project-it (папка ИТ-модуля проекта).
И это, очевидно, не только эта папка, но и все относительные пути, указывающие на разные местоположения.
Все плагины модули имеют минимальный JRE Java 8, и я могу повторить это поведение на машинах Windows и Linux, поэтому я предполагаю, что это специально.
Однако Eclipse всегда возвращает папку IT. Использование System.getProperty("user.dir")
всегда возвращает временную папку. То, что я хочу, - это всегда получать папку IT, даже при выполнении тестов через Tycho. (Потому что там находятся мои тестовые данные.)
Как получить папку ИТ-проекта при выполнении интеграционного теста через Tycho?