Я знаю, що ви можете запустити всі тести в певному класі, використовуючи:
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
-pl <module-name>
.
-DfailIfNoTests=false
для пропуску проектів без тесту. No Tests Were Executed
трапляється, коли ви намагаєтеся запустити тест з root проекту, і там є модулі без тестів взагалі.
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Зауважте, що "-DTest" починається з верхнього випадку "T".
Виникла проблема з надійною версією 2.12. Ось що трапляється зі зміною плагіну Maven-surefire з 2.12 на 2.11:
mvn test -Dtest=DesignRulesTest
Результат:
[ПОМИЛКА] Не вдалося виконати ціль org.apache.maven.plugins: maven-surefire-plugin: 2.12 : тест (тест за замовчуванням) у проекті pmd: Тести не виконані!
mvn test -Dtest=DesignRulesTest
Результат: [INFO] --- maven-surefire-плагін: 2.11 : тест (тест за замовчуванням) @ pmd --- ... Запуск net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Тести запускаються: 5 , Помилки: 0, Помилки: 0, Пропущено: 4, Час минув: 4.009 сек
@Category(IntegrationTest.class)
, використовуйте -Dit.test=ClassName
, інакше ви отримаєте No tests were executed!
навіть з останніми версіями плагінів.
Що я роблю зі своїм TestNG (вибачте, JUnit не підтримує це) тестові випадки - це я можу призначити групу тесту, який я хочу запустити
@Test(groups="broken")
А потім просто запустіть 'mvn -Dgroups = зламаний'.
Запуск набору методів у єдиному тестовому класі З версією 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 test -Dtest = CLASS_NAME1 # METHOD_NAME1
кілька методів з декількох класів: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
Ця команда працює !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Зауважте, що "-DTest" починається з верхнього випадку "T".
Параметр тесту, згаданий tobrien, дозволяє вказати метод, використовуючи # перед назвою методу. Це має працювати для JUnit та TestNG. Я ніколи не пробував цього, просто читав його на сторінці Surefire Plugin :
Вкажіть цей параметр для запуску окремих тестів за назвою файлу, замінюючи параметри, що включають / виключають. Кожен шаблон, який ви вкажете тут, буде використовуватися для створення шаблону включення, форматованого як ** / $ {test} .java, тому ви можете просто ввести "-Dtest = MyTest", щоб запустити єдиний тест під назвою "foo / MyTest.java". Цей параметр замінює параметри, що включають / виключають, і параметр TestNG suiteXmlFiles. оскільки 2.7.3 Ви можете виконати обмежену кількість методів у тесті, додавши #myMethod або # my * ethod. Si тип "-Dtest = MyTest # myMethod" підтримується для junit 4.x та testNg
Нові версії JUnit містять категорію Runner: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Але процедура випуску JUnit не заснована на Maven, тому користувачі Maven повинні розмістити її вручну у своїх сховищах.
Оскільки версія надійного плагіна версії 2.22.1 (можливо, раніше), ви можете запустити один тест, використовуючи властивість тестових імен при використанні 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>
з пом.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
Наскільки мені відомо, плагін verifire не дає жодного способу зробити це. Але сміливо відкривайте питання :)
mvn test -Dtest=classname
синтаксис.