Maven -DskipTests被忽略了

Nep*_*daj 30 java junit maven maven-surefire-plugin

我正在使用以下SureFire配置构建Maven项目:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${version.maven-surefire-plugin}</version>
    <configuration>
        <includes>
            <include>**/*Test.java</include>
        </includes>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

问题是,当我构建它时mvn clean install -DskipTests=true,测试仍在执行中.可能是什么问题呢?

我尝试了两个-DskipTests(来自Maven网站)-DskipTests=true,当我选中"跳过测试"复选框时,它由IntelliJ Idea添加.

我不使用任何Maven settings.xml.

  • Maven版本:2.2.1
  • Surefire插件:2.3

编辑 如果我注释掉SureFire插件配置,该参数的行为与我期望的一样.上面的配置可能有什么问题?

Jac*_*ack 32

Maven知道跳过测试的两种类型的参数:

-Dmaven.test.skip=true 
Run Code Online (Sandbox Code Playgroud)

要么

-DskipTests=true 
Run Code Online (Sandbox Code Playgroud)

神火-插件文件只提到第一位的,你还没有尝试过.

  • 但是maven.test.skip也会跳过编译测试.这不一定是OP想要的. (2认同)

Aar*_*lla 11

你做了什么应该工作.如何进一步调试:

  1. 运行mvn help:effective-pom以查看Maven将执行的整个POM.搜索test(不区分大小写)以查看是否存在奇怪的内容.

  2. 运行mvn test -X以获取调试输出.这将打印用于配置的选项maven-surefire-plugin.确保将输出重定向到文件!

    在日志中,您将看到

    [DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.15:test' with basic configurator -->
    
    Run Code Online (Sandbox Code Playgroud)

    然后,下面的一些行:

    [DEBUG]   (s) runOrder = filesystem
    [DEBUG]   (s) skip = false
    [DEBUG]   (s) skipTests = false
    
    Run Code Online (Sandbox Code Playgroud)

    这些值意味着不会跳过测试.

  3. 您使用的是最新版本的插件吗?这里检查.您的版本可能不支持此选项.

  • 更新到2.15版.2.3很老了.也许它不支持紧凑语法. (2认同)
  • @AaronDigulla你似乎是第一个建议更新surefire的人.你为什么不发表你的评论作为答案,以便NeplatnyUdaj可以接受它?这会使您的声望有所提高,并使解决方案更加明显. (2认同)

Raj*_*aji 5

它不是-DskipTests=true-DskipTests考虑您使用的是surfire 2.3版

所以你以

mvn install -DskipTests
Run Code Online (Sandbox Code Playgroud)

  • 我一直都这样做。但是我的surefire版本是2.5 ..我刚刚在2.3 surefire版本中尝试过,它忽略了skipTests。你能用2.5试一下吗? (2认同)