我们有许多使用roboletric运行的单元测试。
我希望收集关于元数据的指标,例如要运行的最长测试,让线程进入睡眠状态的测试,基本上可以用来改善测试运行时间的任何内容。
答案 0 :(得分:1)
您关心的是缩短测试执行时间。您可以通过各种方式实现。
首先,您必须做出一些决定,哪些测试用例是强制性的,哪些测试用例需要按月运行等。
定义强制测试用例后,您可以使用测试用例分组创建套件。如果并行运行组,则会减少大量时间。但是你的分组准备工作需要很棘手,因此每个小组都可以采取类似的时间。那将是最好的方式。
你可以使用并行进程和线程池来运行你的测试用例多少线程(比如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?
对于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