【问题标题】:Maven: surefire plugin ignores -Dgroups when <groups> is already configuredMaven:当 <groups> 已配置时,surefire 插件会忽略 -Dgroups
【发布时间】:2013-01-18 21:57:18
【问题描述】:

我的项目有一些我很少想要运行的JUnit 测试。为此,我将它们放在@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 忽略。

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

【问题讨论】:

    标签: java maven junit surefire


    【解决方案1】:

    不幸的是,如果在 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
    

    【讨论】:

    • 我刚试过这个,它实际上不起作用:|不知道为什么。在调试中运行 mvn 我可以看到 groups 分配给我在命令行上传递的任何内容,但相关的 @Tag 测试仍然被忽略并且没有执行
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2015-09-22
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2021-06-19
    相关资源
    最近更新 更多