您可以将 配置maven-surefire-plugin
为仅包含特定的测试类和运行mvn test
. 默认情况下,mvn 将运行所有这些:
- “**/Test*.java” - 包括其所有子目录和所有以“Test”开头的 Java 文件名。
- “**/*Test.java” - 包括其所有子目录和所有以“Test”结尾的 Java 文件名。
- “**/*Tests.java” - 包括其所有子目录和所有以“Tests”结尾的 Java 文件名。
- “**/*TestCase.java” - 包括其所有子目录和所有以“TestCase”结尾的 Java 文件名。
但是您可以像这样指定要包含的测试:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<includes>
<include>Sample.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
或排除:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<excludes>
<exclude>**/TestCircle.java</exclude>
<exclude>**/TestSquare.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
话虽如此,这可能不是最好的设计,通常,您应该使用一些测试框架,然后您可以根据需要进行配置。很少有例子是(或组合):jUnit、TestNG、Cucumber、Spring。
例如,在 Cucumber中,您可以拥有标签,然后您可以将其配置为测试执行的一部分。如果您使用 Jenkins,您的构建字段中可能会有这样的内容:
clean install -Dcucumber.options="--tags @Google
或者
clean install -Dcucumber.options="--tags @Bing
在 Spring中,您可以拥有可以像这样作为 Jenkins 作业运行的配置文件:
mvn clean test -Dspring.profiles.active="google"
编辑
或者,您可以在 pom 中定义一个自定义属性,如下所示:
<properties>
<myProperty>command line argument</myProperty>
</properties>
然后像这样从命令行传递它:
mvn install "-DmyProperty=google"
编辑2
在命令行中提供-D
前缀值是设置系统属性的一种方式。您可以从 Java 代码本身执行此操作,如下所示:
Properties props = System.getProperties();
props.setProperty("myPropety", "google");
或者简单地说:
System.setProperty("myPropety", "google");