запустить maven тесты из classpath - PullRequest
4 голосов
/ 23 августа 2010

Чтобы убрать что-то из гигантского беспорядка, я решил поместить код моих тестов в один обычный java-проект (все в src / main / java), а затем объявить это как <scope>test</scope> зависимостьв другом проекте и ожидайте запуска тестов.

Не повезло.surefire хочет просто запустить тесты, которые он видит в источниках.

Здесь я вижу печально очевидное решение, включающее плагин build-helper и добавление тестов в среду компиляции тестов в качестве исходного каталога,но я надеялся избежать этого.

В случае, если кому-то интересно, причина всего этого в том, что конфигурация POM для использования отказоустойчивого плагина для запуска некоторых интеграционных тестов стала настолько сложной, что я хотел отделитьсякомпиляция тестовых классов из запуска тестов.

Ответы [ 3 ]

6 голосов
/ 11 июня 2013

Теперь это возможно с Maven Surefire v2.15.Просто добавьте следующий тип конфигурации в плагин surefire:

<build>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.15</version>
    <configuration>
      <dependenciesToScan>
        <dependency>com.group.id:my-artifact</dependency>
        <dependency>com.group.id:my-other-artifact</dependency>
      </dependenciesToScan>
      ...
    </configuration>
    ...
  </plugin>
  ...
</build>

Вы также должны объявить фактические зависимости в разделе зависимостей:

<dependencies>
  <dependency>
    <groupId>com.group.id</groupId>
    <artifactId>my-artifact</artifactId>
    <type>test-jar</type>
    <version>1.1</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>com.group.id</groupId>
    <artifactId>my-other-artifact</artifactId>
    <type>test-jar</type>
    <version>1.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>
3 голосов
/ 23 августа 2010

Нет такой удачи. Верный хочет просто запустить тесты, которые он видит в источниках.

Это в настоящее время невозможно из коробки, верный взгляд только на классы в target/test-classes:

Это на самом деле зарегистрировано как SUREFIRE-569 - должен быть способ запуска модульных тестов из jar зависимостей .

Здесь я вижу печально очевидное решение, включающее плагин build-helper-plugin и добавление тестов в среду компиляции тестов в качестве исходного каталога, но я надеялся избежать этого.

Текущий обходной путь - использовать dependency:unpack, чтобы распаковать банку в target/test-classes до фазы test.

1 голос
/ 23 августа 2010

Разве вы не можете сделать это наоборот?

Я имею ввиду поставить код src / test / java, зависеть от вашего основного модуля и запустить тесты в вашем тестовом модуле?

...