当前位置:  开发笔记 > 编程语言 > 正文

在并行模式下使用maven-surefire-plugin时如何识别慢速单元测试?

如何解决《在并行模式下使用maven-surefire-plugin时如何识别慢速单元测试?》经验,为你挑选了1个好方法。

为了管理/减少构建时间,我想确定哪些单元测试花费的时间最多 - 在并行测试环境中使用maven-surefire-plugin.

我们使用JUnit(4.10)进行单元测试.我们使用maven(2.2.1 - 我们使用的一些插件尚不支持maven 3)作为我们的主要构建工具,并使用maven-surefire-plugin(2.19)运行单元测试.

我们使用的是maven-surefire-plugin在并行模式,其中两个单独的方法在平行和单元测试类运行并行运行-这是非常重要的,因为它显著降低建设单位测试时间.的maven-surefire-plugin在构成.pom如下:

  
    org.apache.maven.plugins
    maven-surefire-plugin
    2.19
    
      -Xmx2G -XX:MaxPermSize=1G -XX:-UseSplitVerifier
      false
      classesAndMethods
      true
    
  

但是,其中一个含义是在控制台输出中,每个JUnit测试类所用的时间是该类中所有方法的总时间.

例如,如果测试类有10个单元测试方法,每个测试方法需要1秒才能运行,那么测试类需要大约1秒才能运行(每个方法并行运行),但输出类似于:

运行com.package.QuickParallelTest测试运行:10,失败:0,错误:0,跳过:0,已过去时间:10.0秒 - 在com.package.QuickParallelTest中

这使得很难在控制台输出与另一个测试类中区分10个单元测试方法,其中9个几乎立即运行,1个运行几乎需要10秒.在这种情况下,测试类需要大约10秒才能运行(因为一个慢速测试方法),但maven-surefire-plugin控制台输出实际上是相同的:

运行com.package.SlowParallelTest测试运行:10,失败:0,错误:0,跳过:0,已过去时间:10.0秒 - 在com.package.SlowParallelTest

理想情况下,我希望花时间来指示测试类运行多长时间(并行),而不是单独运行方法所花费的总时间(就像单线程一样).

所以,我的问题是:

    是否存在我缺少的maven-surefire-plugin设置,以便打印摘要显示每个类所花费的时间而不是方法的聚合?

    这是一个已知的"错误"(或"功能")maven-surefire-plugin吗?(我检查了SureFire JIRA,但找不到这样的东西.)

    是否有另一种方法可以确定哪些测试需要很长时间才能进行优化.

编辑:

我试过玩一些额外的配置设置.奇怪的是,将以下内容添加到配置中.pom似乎将控制台输出中经过的时间更改为运行测试类所花费的时间 - 但是,这(在我看来)这是违反直觉的,因为这些设置是默认设置:

    
      ...
      1
      true
    

A_Di-Matteo.. 14

添加到Maven Surefire插件配置的reportFormat条目并将其值设置为plain(而不是默认值brief)将为每个方法提供经过的时间.


    
        
            org.apache.maven.plugins
            maven-surefire-plugin
            2.19
            
                -Xmx2G -XX:MaxPermSize=1G -XX:-UseSplitVerifier
                false
                classesAndMethods
                true
                plain
            
        
    

使用默认reportFormat(brief)输出:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.sample.mocking.InternalServiceTestCase
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.241 sec - in com.sample.mocking.InternalServiceTestCase

输出plain值:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.sample.mocking.InternalServiceTestCase
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.187 sec - in com.sample.mocking.InternalServiceTestCase
test(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.005 sec
mockTest(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.17 sec
mockTestFailureTollerance(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.007 sec
mockProcessfile(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.003 sec

此选项可为您提供有关测试和执行时间的更多详细信息.



1> A_Di-Matteo..:

添加到Maven Surefire插件配置的reportFormat条目并将其值设置为plain(而不是默认值brief)将为每个方法提供经过的时间.


    
        
            org.apache.maven.plugins
            maven-surefire-plugin
            2.19
            
                -Xmx2G -XX:MaxPermSize=1G -XX:-UseSplitVerifier
                false
                classesAndMethods
                true
                plain
            
        
    

使用默认reportFormat(brief)输出:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.sample.mocking.InternalServiceTestCase
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.241 sec - in com.sample.mocking.InternalServiceTestCase

输出plain值:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.sample.mocking.InternalServiceTestCase
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.187 sec - in com.sample.mocking.InternalServiceTestCase
test(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.005 sec
mockTest(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.17 sec
mockTestFailureTollerance(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.007 sec
mockProcessfile(com.sample.mocking.InternalServiceTestCase)  Time elapsed: 0.003 sec

此选项可为您提供有关测试和执行时间的更多详细信息.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有