我知道您可以使用以下方法在某个类中运行所有测试:
mvn test -Dtest=classname
但我想运行一个单独的方法和-Dtest=classname。Methodname似乎不起作用。
我知道您可以使用以下方法在某个类中运行所有测试:
mvn test -Dtest=classname
但我想运行一个单独的方法和-Dtest=classname。Methodname似乎不起作用。
当前回答
新版本的JUnit包含Categories运行器: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
但是JUnit的发布过程不是基于maven的,因此maven用户必须手动将其放入他们的存储库中。
其他回答
在单个测试类中运行一组方法 使用版本2.7.3,您只能在单个测试类中运行n个测试。
注意:junit 4支持。x和TestNG。
必须使用以下语法
mvn -Dtest=TestCircle#mytest test
你也可以使用模式
mvn -Dtest=TestCircle#test* test
从surefire 2.12.1开始,您可以选择多种方法(目前仅限JUnit4X,欢迎补丁)
mvn -Dtest=TestCircle#testOne+testTwo test
查看有关单个测试的链接
我用我的TestNG(对不起,JUnit不支持这个)测试用例所做的是,我可以为我想要运行的测试分配一个组
@Test(groups="broken")
然后简单地运行'mvn -Dgroups=broken'。
tobrien提到的test参数允许您在方法名称前使用#来指定方法。这应该适用于JUnit和TestNG。我从来没有尝试过,只是在Surefire插件页面上阅读:
Specify this parameter to run individual tests by file name, overriding the includes/excludes parameters. Each pattern you specify here will be used to create an include pattern formatted like **/${test}.java, so you can just type "-Dtest=MyTest" to run a single test called "foo/MyTest.java". This parameter overrides the includes/excludes parameters, and the TestNG suiteXmlFiles parameter. since 2.7.3 You can execute a limited number of method in the test with adding #myMethod or #my*ethod. Si type "-Dtest=MyTest#myMethod" supported for junit 4.x and testNg
您可以使用以下语法运行特定的测试类和方法:
完整包: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
在surefire插件2.22.1版本(可能更早),你可以在使用testng.xml时使用testnames属性运行单个测试
给定下面的test .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