Запуск тестов с упаковкой maven типа pom

У меня возникают проблемы с запуском модульных тестов, когда мой pom настроен на тип упаковки «pom». Сначала говорилось, что для этого проекта цели не нужны, поэтому я добавил maven-surefire-plugin в свой pom.xml, чтобы привязать фазу тестирования к цели тестирования maven-surefire-plugin.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.9</version>
            <executions>
                <execution>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                </execution>
            </executions>
        </plugin> 

Теперь запускается плагин surefire, но он говорит, что тестов для запуска нет. Если я изменил тип упаковки на jar и запустил mvn test, он заберет мои файлы тестов.

Когда я запускаю mvn test -X, он говорит: «testSourceDirectory = C: \ dev \ dsl \ src \ test \ java», что является правильным местоположением. Отличается ли место проведения испытаний для упаковки типа «пом» и «банка»? Я пробовал добавить

            <configuration>
                <testSourceDirectory>src/test/java</testSourceDirectory>
            </configuration>

к плагину surefire, но это совершенно не помогло.


person user977208    schedule 12.01.2012    source источник
comment
Упаковка POM предназначена только для проектов с метаданными, не так ли? Что ты пытаешься сделать?   -  person Dave Newton    schedule 13.01.2012
comment
На самом деле я нахожусь в том же сценарии - у меня есть только модуль системных тестов, который я хотел бы запустить, но не создавать из них банку. Однако я не могу запустить тесты, не указав тип упаковки чего-то, кроме pom. Как бы я это сделал (наверное, это стоит отдельного вопроса).   -  person whaley    schedule 19.11.2012
comment
@DaveNewton Я хотел сделать это, потому что это не было Java-приложением, я хотел создать zip-файл со скриптами базы данных в качестве артефакта.   -  person user977208    schedule 20.11.2012
comment
@whaley Как указано ниже, вам нужно привязать цель compiler: testCompile к фазе тестовой компиляции, а surefire: test - к фазе тестирования.   -  person user977208    schedule 20.11.2012


Ответы (1)


Как прокомментировал Дейв, если вы используете pom упаковку, она выполняет только следующие цели жизненного цикла. См. эту соответствующую документацию maven.

  • упаковка
  • установить
  • развертывать

Если он вам нужен для выполнения какой-либо другой цели, вам нужно будет явно указать его. Например,

mvn clean compiler:testCompile surefire:test
person Raghuram    schedule 13.01.2012
comment
О, спасибо! Я знал, что это не связано с фазой тестирования, но у меня в голове не возникало мысли, что мне также понадобится запустить compiler: testCompile. - person user977208; 13.01.2012
comment
Еще один вопрос. Я думал, что могу привязать compiler: testCompile к фазе тестирования, но, похоже, это не работает. Какие-либо предложения? ‹Plugin› ‹groupId› org.apache.maven.plugins ‹/groupId› ‹artifactId› maven-compiler-plugin ‹/artifactId› ‹version› 2.3.2 ‹/version› ‹executions› ‹execution› ‹phase› test- компиляция ‹/phase› ‹goals› ‹goal› testCompile ‹/goal› ‹/goals› ‹/execution› ‹/executions› ‹/plugin› - person user977208; 13.01.2012
comment
Неважно, у меня было два раздела maven-compiler-plugin, поэтому он переопределялся - person user977208; 14.01.2012
comment
Я использую это как компилятор mvn clean package: testCompile surefire: test, потому что без пакета у меня были ошибки - person hEngi; 05.06.2018