Maven: пропустить тест, но все равно проваливается - PullRequest
0 голосов
/ 03 марта 2012

Я не знаю, если это вопрос или предложение. Но я задам это как вопрос, потому что, может быть, я делаю что-то не так.

Моя проблема заключалась в том, что я хотел пропустить тесты в сборке maven. В плагине eclipse я установил опцию Пропустить тестирование в конфигурации при запуске maven. Он все еще не работал на плагине Test surefire, так как не мог загрузить версию 2.4.3 (хотя мой предыдущий проект maven использовал 2.7.2 и он уже был в моем репозитории), поэтому я попытался пропустить тесты, и он все еще не удалось.

Я настроил свой POM, чтобы использовать плагин 2.7.3 верного запуска, который у меня уже был, и он пошел дальше, говоря только о пропуске тестов. Теперь я путаюсь с тем, что, когда он уже собирался пропустить тестовую часть, зачем начинать загрузку и подтверждать, есть ли плагин для верного запуска или нет. Просто пропустите, я говорю ..

хорошо, это нормальное поведение maven, когда вы что-то пропускаете, плагин все равно загружается, как будто вы собираетесь его использовать. Или я сделал это неправильно, что заставило его скачать.

Может быть потому, что появилось что-то новое, называемое «Effective POM», и оно содержало список плагинов surefire 2.4.2 в области управления плагином, когда я импортировал свой проект maven в eclipse, используя m2eclipse, и я не мог редактировать Effective POM , Я не видел этого раньше в NetBeans при создании проекта maven.

Для того, чтобы работать, я добавил ненужную запись о надёжном плагине в свой профиль сборки, пропустил там тесты и добавил версию, которая уже была в моем репо. Я сделал это только для того, чтобы мой проект мог быть построен также и по Eclipse. в противном случае мой проект работает в NetBeans и в простой командной строке без каких-либо проблем.

Любые комментарии !!

Я думаю, что maven должен сначала увидеть часть SKIP, а затем перейти к использованию плагина.

Сайед ..

Ответы [ 3 ]

0 голосов
/ 04 марта 2012

Компиляция и запуск тестов является частью стандартного жизненного цикла maven.Поскольку maven использует surefire для запуска тестов, он должен загрузить surefire.skipTests это не конфигурация maven, а верная конфигурация плагина.Плагин определяет, что maven должен skip tests.

. Что касается 2.4.3 безошибочного плагина, это допустимая версия , но он будет работать с 2.0.6 версией maven.Скорее всего, вы используете более новую версию maven, но по какой-то причине в вашей системе есть super pom более старой версии maven.

0 голосов
/ 05 марта 2012

skipTest не говорит maven пропустить жизненный цикл теста, он говорит плагину surefire не запускать их.Плагин все еще является частью жизненного цикла (он просто ничего не делает, когда его вызывают).Отсюда и ваша ошибка.

Если вы вообще не хотите иметь точный огонь, вам нужно определить свою собственную упаковку (поскольку верный огонь является частью стандартного жизненного цикла упаковки в банку) - это намного больше, чем просто выбратьверсия верного огня, которая работает для вас (добавьте раздел с правом в вашем разделе).

0 голосов
/ 03 марта 2012

Судя по тому, что вы упомянули, вы не поняли разницу между использованием плагина и его настройкой. В этом случае вы используете плагин (он находится в вашей области сборки или, как вы уже поняли, приходит через супер-помпу). Кроме того, вы пытаетесь пропустить тесты, несмотря на то, что maven-surefire-plugin в версии 2.7.3 не существует.

Параметр конфигурации skip не будет выполнять тесты, а также не компилировать их. Если вы не хотите просто игнорировать тесты в течение ограниченного времени, вы можете использовать параметр "skipTest", который в отличие от пропуска будет продолжать компилировать тесты.

Я бы порекомендовал использовать раздел pluginManagement вашего проекта или ваш родительский pom для определения версии maven-surefire-plugin (которая в то же время существует в версии 2.12) ...

В следующем фрагменте добавляется часть pluginManagement к pom, которая определяет, какая версия плагина maven-surefire будет использоваться.

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.11</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
    ..
  </build>

После того, как вы вставили это в pom вашего проекта, pom эффективный вывод должен дать вам версию ... в противном случае вам может потребоваться сначала обновить конфигурацию проекта.

...