Запустите один тестовый метод с maven

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

mvn test -Dtest=classname

Но я хочу запустить индивидуальный метод и -Dtest = classname.methodname, похоже, не работает.

Ответ 1

Чтобы запустить один метод тестирования в Maven, вам нужно предоставить команду как:

mvn test -Dtest=TestCircle#xyz test

где TestCircle - это имя класса теста, а xyz - метод теста.

Подстановочные знаки также работают; как в имени метода, так и в имени класса.

Если вы тестируете в многомодульном проекте, укажите модуль, в котором выполняется тест, с -pl <module-name>.

Для интеграционных тестов используйте it.test=... вместо test=...:

mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test

Ответ 2

Существует проблема с верным 2.12. Вот что случилось со мной, изменив maven-surefire-plugin с 2.12 на 2.11:

  1. mvn test -Dtest=DesignRulesTest

    Результат:
    [ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-surefire-plugin: 2.12: test (default-test) для проекта pmd: Тесты не выполнялись!

  2. mvn test -Dtest=DesignRulesTest

    Результат: [INFO] --- maven-surefire-plugin: 2.11: test (default-test) @pmd ---... Запуск net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Выполнено тестов: 5, Сбои: 0, Ошибки: 0, Пропущено: 4, Время истекло: 4.009 сек.

Ответ 3

Что я делаю с моим TestNG (извините, JUnit не поддерживает это), я могу назначить группу тесту, который я хочу запустить

@Test(groups="broken")

А затем просто запустите 'mvn -Dgroups = broken'.

Ответ 4

Выполнение набора методов в одном тестовом классе В версии 2.7.3 вы можете запускать только n тестов в одном тестовом классе.

ПРИМЕЧАНИЕ: он поддерживается для junit 4.x и TestNG.

Вы должны использовать следующий синтаксис

mvn -Dtest=TestCircle#mytest test

Вы также можете использовать шаблоны

mvn -Dtest=TestCircle#test* test

С уверенностью 2.12.1 вы можете выбрать несколько методов (JUnit4X только в это время, приветствия патчей)

mvn -Dtest=TestCircle#testOne+testTwo test

Проверьте ссылку о отдельных тестах

Ответ 5

Вы можете запустить определенный тестовый класс и метод (ы), используя следующий синтаксис:

  1. полный пакет: mvn test -Dtest = "com.oracle.tests. **"

  2. весь метод в классе: mvn test -Dtest = CLASS_NAME1

  3. один метод из одного класса: тест mvn -Dtest = CLASS_NAME1 # METHOD_NAME1

  4. несколько методов из нескольких классов: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2

Ответ 6

Эта команда работает!   mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test Обратите внимание, что "-DTest" начинается с UPPER CASE "T".

Ответ 7

Параметр теста, указанный tobrien, позволяет вам указать метод с использованием # перед именем метода. Это должно работать для JUnit и TestNG. Я никогда не пробовал, просто прочитал его на странице Surefire Plugin:

Укажите этот параметр для запуска отдельных тестов по имени файла, переопределяя параметры include/excludes. Каждый шаблон, который вы укажете здесь, будет использоваться для создания шаблона include, отформатированного как **/${test}.java, поэтому вы можете просто набрать "-Dtest = MyTest", чтобы запустить один тест под названием "foo/MyTest.java". Этот параметр переопределяет параметры include/excludes и параметр TestNG suiteXmlFiles. начиная с 2.7.3. Вы можете выполнить ограниченное число методов в тесте с добавлением #myMethod или # my * ethod. Si тип "-Dtest = MyTest # myMethod" поддерживается для junit 4.x и testNg

Ответ 8

В новых версиях JUnit есть бегун Категории: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html

Но процедура выпуска JUnit не основана на maven, поэтому пользователи maven должны вручную помещать их в свои репозитории.

Ответ 9

С верным плагином версии 2.22.1 (возможно, ранее) вы можете запускать одиночный тест с использованием свойства testnames при использовании testng.xml

Учитывая следующий testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <test name="all-tests">
        <classes>
            <class name="server.Atest"/>
            <class name="server.Btest"/>
            <class name="server.Ctest"/>
        </classes>
    </test>
    <test name="run-A-test">
        <classes>
            <class name="server.Atest"/>
        </classes>
    </test>
    <test name="run-B-test">
        <classes>
            <class name="server.Btest"/>
        </classes>
    </test>
    <test name="run-C-test">
        <classes>
            <class name="server.Ctest"/>
        </classes>
    </test>
</suite> 

с помощью pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    [...]
    <properties>
        <selectedTests>all-tests</selectedTests>
    </properties>
    [...]
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
                <suiteXmlFiles>
                    <file>src/test/resources/testng.xml</file>
                </suiteXmlFiles>
                <properties>
                    <property>
                        <name>testnames</name>
                        <value>${selectedTests}</value>
                    </property>
                </properties>
            </configuration>
        </plugin>
    </plugins>
    [...]
</project>

Из командной строки

mvn clean test -DselectedTests=run-B-test

Дальнейшее чтение - плагин Maven surefire с использованием testng

Ответ 10

Вы можете запустить один тестовый класс, но не один метод в тестовом классе. Вы используете простое имя класса, а не полное имя класса. Итак, если у вас есть тест в "org.sonatype.test.MyTest", и это единственный тест, который вы хотите запустить, ваша командная строка будет выглядеть так:

mvn test -Dtest=MyTest

Ответ 11

Насколько мне известно, плагин уверенности не предоставляет никакого способа сделать это. Но не стесняйтесь открывать вопрос:)