我如何分析junit测试套件?

时间:2016-11-03 01:04:50

标签: java android testing junit robolectric

我们有许多使用roboletric运行的单元测试。

我希望收集关于元数据的指标,例如要运行的最长测试,让线程进入睡眠状态的测试,基本上可以用来改善测试运行时间的任何内容。

1 个答案:

答案 0 :(得分:1)

您关心的是缩短测试执行时间。您可以通过各种方式实现。

首先,您必须做出一些决定,哪些测试用例是强制性的,哪些测试用例需要按月运行等。

定义强制测试用例后,您可以使用测试用例分组创建套件。如果并行运行组,则会减少大量时间。但是你的分组准备工作需要很棘手,因此每个小组都可以采取类似的时间。那将是最好的方式。

对于JUnit,

你可以使用并行进程和线程池来运行你的测试用例多少线程(比如20个线程为5000 tcs)

<build>
    <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.7.1</version>
        <configuration>
            <parallel>classes</parallel>
            <threadCount>20</threadCount>
        </configuration>
    </plugin>
    </plugins>
</build>
  

如果我们在这里计算..假设,每个测试用例需要3秒   执行。

     

5000 * 3 = 15000sec / 3600 = 4.166小时。

     

现在,使用并行处理将需要(5000/20)* 3 = 750sec / 3600   = 0.21小时或仅12.5分钟。

资源链接: Running junit tests in parallel in a Maven build?

对于TestNG,Appium,Jenkins等

对于UI测试,您可以运行多浏览器,以便并行执行更多测试用例。

您可以使用多个节点,以便一次可以运行多个节点并缩短时间。

在某些情况下,您可能会更加棘手,因为您不会在每个测试用例中登录。将有一个起点。每个测试用例都将结束,并将返回该起点。通过这种方式,我们还可以减少时间。但它违反了F.I.R.S.T。

  

用于分析,报告和显示代码覆盖率的状态,   执行时间,使用各种类型的工具。 JaCoCo是最多的   其中很受欢迎。还有像Cobertura这样的工具,   Arquillian等。

这里给出了使用JUnit,JaCoCo和Maven进行代码覆盖的完整示例https://softwarecave.org/2014/02/01/using-junit-jacoco-and-maven-for-code-coverage/

此处提供完整代码:https://github.com/robertp1984/softwarecave/tree/master/jacoco