Затмение - JUnit / m2eclipse проблема пути к классам - PullRequest
0 голосов
/ 08 апреля 2011

Я создаю приложение GWT с Maven для разрешения зависимостей, и у меня возникла странная проблема с Eclipse при попытке запустить тесты JUnit.У меня есть стандартная maven-подобная структура источников и тестов:

/src/main/java
/src/test/java

Если я установил Java Build Bath> Папка по умолчанию для всех папок с исходниками на:

/MyProject/target/classes

тогда проблем нет.Однако для того, чтобы плагин GWT нуждался в источниках:

/MyProject/src/main/webapp/WEB-INF/classes

, чтобы иметь возможность развертывания из этого каталога в режиме разработки, в противном случае он жалуется.Однако, если я установил выходной каталог всех исходных папок в этот каталог, тесты не пройдут с ClassNotFoundException.

Это можно обойти, если я вручную добавлю каталог /MyProject/src/main/webapp/WEB-INF/classes в путь к классу запуска JUnit,поэтому очевидно, что скомпилированные файлы .class отсутствуют, и, следовательно, я получаю исключение.Но почему же затмение не добавляет каталог в classpath автоматически, если я определяю его как выходной каталог по умолчанию?

Я подозреваю, что плагин m2eclipse переопределяет настройку выходной папки по умолчанию, не так ли?Потому что, если я установлю выходную папку для /src/main/java на /target/classes и src/test/java на /target/test-classes, все будет работать.Но если какой-либо выходной каталог установлен вне этих двух, он не работает.

Буду признателен за любые идеи, спасибо!

1 Ответ

5 голосов
/ 18 апреля 2011

m2eclipse имеет легендарную историю игнорирования настроек пути к классам проекта при запуске модульных тестов.Раньше это было (0.12 версии m2eclipse и более ранних, я думаю), что если вы просто бросили борьбу и установили пути к классам по умолчанию для вашего проекта, но target / classes (для исходного кода) и target / test-classes (для модульного теста)код) все было бы рад.С 0.13 m2eclipse это больше не работает, так как сборщик maven, кажется, помещает вещи в target / your-artificat-version-SNAPSHOT / web-inf / classes.В основном, папка для артефакта, который строит maven.Это действительно отстой, так как этот путь включает номер версии.

m2eclipse почти исчерпал мое терпение; -).

Совет: чтобы узнать, что происходит с вашими путями классов модульного теста, вы всегда можете DEBUG в качестве модульного теста, затем щелкните правой кнопкой мыши по потоку в перспективе отладки и выберите «свойства».Это покажет вам полный путь к классам, используемый для модульных тестов, и вы увидите, что подлые раздражающие плагины делают с вашим путем к классам.

...