我如何分析junit测试套件?

RyP*_*ope 6 java testing junit android robolectric

我们有许多单元测试与roboletric一起运行.

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

Sky*_*ker 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>
Run Code Online (Sandbox Code Playgroud)

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

对于 5000*3 = 15000 秒/3600 = 4.166 小时。

现在,使用并行处理只需 (5000/20)*3 = 750 秒/3600 = 0.21 小时或“12.5 分钟”。

资源链接: 在 Maven 构建中并行运行 junit 测试?

对于 TestNG、Appium、Jenkins 等

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

您可以使用多个节点,以便同时运行多个节点并减少时间。

在某些情况下,您可能会更加棘手,以至于您不会在每个测试用例中都登录。会有一个起点。每个测试用例都会结束并返回该起点。通过使用这种方式,我们还可以减少时间。但这违反了FIRST

为了分析、报告和显示代码覆盖率、执行时间的状态,使用了各种类型的工具。其中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