5

我的项目有一些JUnit我很少想运行的测试。为此,我将它们放入 a 中@Category,然后执行以下操作:

<plugin>
   <artifactId>maven-surefire-plugin</artifactId>
   <!-- Run all but the inject tests -->
   <configuration>
      <groups>!be.test.InjectTests</groups>
   </configuration>
</plugin>

我想覆盖命令行中的配置以运行注入测试,如下所示:

mvn clean install -Dgroups=be.test.InjectTests

但这不起作用, -Dgroups 被 Maven 忽略。

如果我不把命令工作正常。

4

1 回答 1

6

不幸的是,如果在 pom 中设置了某些东西,它似乎不容易被覆盖(如果你skipTests明确设置,也很难用属性覆盖)......但是!(这有点小技巧)您可以将属性的设置推迟到 pom 属性,然后在命令行上覆盖它。

<project>
...
<properties>
    <groups>!Slow</groups>
<properties>
....
<build>
    <plugins>
        ...
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.13</version>
           <configuration>
            <groups>${groups}</groups>
           </configuration>
        </plugin>
    </plugins>
</build>
...

有了这个(以及一个快速构建的项目,在 OSX、Maven 3.0.4、Java 1.6.0_37 上运行):

$ mvn clean test
...
Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
...
$ mvn clean test -Dgroups=Slow
...
Results :

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
于 2013-01-18T22:50:24.613 回答