Тестовый исходный каталог Maven

#java #eclipse #maven #tycho

#java #eclipse #maven #tycho

Вопрос:

У меня есть многомодульный проект Maven3, и я хочу запустить тестирование JUnit. Текущая структура проекта следующая:

 -- plugin
    |-- src
    |   |-- [package]
    |   |   -- [source code]
    |   |       
    |-- src-test
    |   |-- [package]
    |   |   -- [unit tests]
    |   |
    |   -- resources
  

Если я перемещаю src-test папку в src папку, тесты работают просто отлично. Но я хочу избежать изменения структуры проекта.

Я уже пробовал с <testSourceDirectory> тегом в pom, но это не сработало.

  <parent>
    <groupId>xxxx</groupId>
    <artifactId>xxxx</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>xxxx</groupId>
  <artifactId>yyyy</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <build>

    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>src-test</testSourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>0.24.0</version>
        <configuration>

          <includes>
              <include>**/*Test.java</include>
          </includes>
          <useUIHarness>false</useUIHarness>
          <providerHint>junit4</providerHint>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
  

Есть ли какое-либо решение?
Заранее благодарю вас!

Комментарии:

1. Вы должны поместить свой тестовый код в отдельный подключаемый модуль. Смотрите, например, этот учебник по Tycho .

2. Я пытаюсь запустить JUnit-тест, а не интеграционный тест. Для интеграционного теста я использую, как предлагает voggella, отдельные плагины.

3. В общем случае тесты JUnit следует помещать в отдельный подключаемый модуль, чтобы не загрязнять зависимости. В Eclipse плагины представляют собой пакеты OSGi, и вместо простого пути к классам в MANIFEST.MF файле указаны зависимости. Tycho разрешает зависимости через p2, что отличается от построения простого Java-приложения с Maven без Tycho.

4. Спасибо за ваше предложение, но я хочу избежать изменения структуры проекта.

5. Можете ли вы показать, как вы указали зависимость JUnit? В MANIFEST.MF качестве Require-Bundle ?

Ответ №1:

Мне удалось найти решение для этого. Я добавил папку src-test в build.properties плагина.