Я знаю, что вы можете запускать все тесты в определенном классе, используя:
mvn test -Dtest=classname
Но я хочу запустить индивидуальный метод и -Dtest = classname.methodname, похоже, не работает.
Я знаю, что вы можете запускать все тесты в определенном классе, используя:
mvn test -Dtest=classname
Но я хочу запустить индивидуальный метод и -Dtest = classname.methodname, похоже, не работает.
Чтобы запустить один метод тестирования в 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.12. Вот что случилось со мной, изменив maven-surefire-plugin с 2.12 на 2.11:
mvn test -Dtest=DesignRulesTest
Результат:
[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-surefire-plugin: 2.12: test (default-test) для проекта pmd: Тесты не выполнялись!
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 сек.
Что я делаю с моим TestNG (извините, JUnit не поддерживает это), я могу назначить группу тесту, который я хочу запустить
@Test(groups="broken")
А затем просто запустите 'mvn -Dgroups = broken'.
Выполнение набора методов в одном тестовом классе В версии 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
Проверьте ссылку о отдельных тестах
Вы можете запустить определенный тестовый класс и метод (ы), используя следующий синтаксис:
полный пакет: mvn test -Dtest = "com.oracle.tests. **"
весь метод в классе: mvn test -Dtest = CLASS_NAME1
один метод из одного класса: тест mvn -Dtest = CLASS_NAME1 # METHOD_NAME1
несколько методов из нескольких классов: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
Эта команда работает!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Обратите внимание, что "-DTest" начинается с UPPER CASE "T".
Параметр теста, указанный 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
В новых версиях JUnit есть бегун Категории: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Но процедура выпуска JUnit не основана на maven, поэтому пользователи maven должны вручную помещать их в свои репозитории.
С верным плагином версии 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
Вы можете запустить один тестовый класс, но не один метод в тестовом классе. Вы используете простое имя класса, а не полное имя класса. Итак, если у вас есть тест в "org.sonatype.test.MyTest", и это единственный тест, который вы хотите запустить, ваша командная строка будет выглядеть так:
mvn test -Dtest=MyTest
Насколько мне известно, плагин уверенности не предоставляет никакого способа сделать это. Но не стесняйтесь открывать вопрос:)