Верные аргументы Maven при запуске теста JUnit через eclipse

Вопрос новичка по Maven - Surefire - Eclipse - JUnit

Я настроил плагин maven-surefire в файле pom моего проекта для передачи некоторых дополнительных аргументов JVM, как показано ниже:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven.surefire.plugin.version}</version>
            <configuration>
                <argLine>-d64 -Xms128m -Xmx4096m -XX:PermSize=512m -Duser.timezone=UTC -XX:-UseSplitVerifier</argLine>
            </configuration>
        </plugin>

Когда я запускаю тестовый пример этого проекта из Eclipse как Run As-> JUnit Test, хотя путь к классам задан правильно, дополнительные аргументы, указанные в argLine, не включаются в вызов. Мне нужно идти и вручную вводить аргументы под соответствующим Debug Configurations. Я не совсем понимаю, как JUnit знает, что ему нужно поместить банки области тестирования в путь к классам, и каким-то образом означает, что инструмент JUnit в Eclipse знает о Maven через M2E? Если да, то как мы можем заставить его также читать argLine. Я знаю, это звучит очень специфично, но как другие справляются с подобными ситуациями?

Заранее спасибо!


person Kilokahn    schedule 12.09.2012    source источник
comment
Вы можете добавить аргументы программы в конфигурацию запуска Junit, введя их на вкладке Arguments определения ланчера внутри Eclipse.   -  person HDave    schedule 15.04.2013
comment
Обратите внимание, что вам необходимо разделить аргументы для виртуальной машины и аргументы для самой программы.   -  person Thorbjørn Ravn Andersen    schedule 12.06.2014
comment
Я вижу, что IntelliJ делает именно то, что я ожидал.   -  person Kilokahn    schedule 04.01.2018


Ответы (1)


Eclipse JUnit Launcher (выберите Run As -> JUnit Test) — это независимый запуск тестов, который имеет свой собственный предопределенный жизненный цикл сборки и запуска и не имеет ничего общего с Maven, он не будет волшебным образом подбирать ваш pom и читать в надежной конфигурации и использовать их для гоните тестовый ход.

Если ваш проект импортирован как существующий проект Maven, используйте Maven (выберите Run as -> Maven test) и запустите тест JUnit, который подберет и будет использовать надежную конфигурацию. Это точно так же, как запуск mvn test из командной строки, он только выводит журнал запуска в консоль, и вы не сможете использовать красивое красное и зеленое окно пользовательского интерфейса JUnit.

Надеюсь, это имеет смысл.

person yorkw    schedule 12.09.2012
comment
если Eclipse JUnit является независимым исполнителем тестов, как он узнает, какие jar-файлы необходимо поместить в путь к классам на основе области тестирования? - person Kilokahn; 13.09.2012
comment
Вообще говоря, этим занимается m2eclipse. При импорте существующего проекта maven именно m2eclipse доминирует в настройке проекта, т. е. генерирует файл метаданных Eclipse .project и .classpath, заполняет путь к классам проекта (причинно из pom.xml) и т. д. После успешного импорта проекта в IDE m2eclpise в значительной степени сделал свое дело. Отсюда, если хотите, вы можете выполнять свою работу (кодирование/отладка/тестирование) без участия m2eclipse. Насколько я знаю, между m2eclipse и Eclipse JUnit Launcher нет никакой связи. - person yorkw; 13.09.2012
comment
Спасибо за информацию! Затем следующим шагом будет проверка, может ли m2eclipse также прочитать argLine конфигурации плагина surefire и каким-то образом заполнить отладочную конфигурацию тестов в этом проекте, чтобы получить аргументы из argLine, верно? Или это просят слишком много? :) - person Kilokahn; 13.09.2012
comment
Вы можете использовать либо Run as -> Maven test, либо Run As -> JUnit Test с ручной настройкой (явно добавьте эти аргументы в конфигурацию запуска). - person yorkw; 13.09.2012
comment
Мне нравится красно-зеленая штука, которая появляется, когда я запускаю тест JUnit, и легкость, с которой я могу видеть исключения и результаты теста по сравнению с запуском теста Maven. Но добавление этих аргументов снова и снова для всех тестовых случаев вручную — это боль. Однако, если вариантов не осталось, у нас нет выбора! :) - person Kilokahn; 14.09.2012
comment
Вы можете просмотреть отчеты о тестировании Surefire в представлении Eclipse JUnit, если откроете файлы XML в target/surefire-reports. - person thSoft; 13.03.2013
comment
m2e подключается ко многим местам, включая средство запуска junit test runner. Было бы совершенно правильно, если бы он ввел эту информацию. - person Thorbjørn Ravn Andersen; 12.06.2014