我知道您可以使用以下方法在某个类中运行所有测试:

mvn test -Dtest=classname

但我想运行一个单独的方法和-Dtest=classname。Methodname似乎不起作用。


当前回答

新版本的JUnit包含Categories运行器: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html

但是JUnit的发布过程不是基于maven的,因此maven用户必须手动将其放入他们的存储库中。

其他回答

我尝试了这个线程中提供的几个解决方案,但它们不适用于依赖于不同的模块。在这种情况下,我必须使用额外的参数从根模块运行mvn: -am(——same -make),它告诉maven构建您的测试模块所依赖的模块,并且-DfailIfNoTests=false,否则会出现“没有测试被执行!”错误。

mvn test -pl B -Dtest=MyTestClass#myTest -am -DfailIfNoTests=false

root目录下的Pom.xml部分:

<modules>
    <module>A</module>
    <module>B</module>
<modules>

B取决于A。

这个命令有效!! 请注意,“-DTest”以大写字母“T”开头。

在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

要在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

首先,你需要清理你的专业项目

mvn戒毒

然后您可以使用运行特定的文件和函数

mvn test -Dtest=testClassName#testCaseName