java - 如何分析 junit 测试套件?

标签 java android testing junit robolectric

我们正在使用 roboletric 运行许多单元测试。

我希望收集有关元数据的指标,例如运行时间最长的测试、让线程 hibernate 的测试,基本上是任何可以用来改善测试运行时间的东西。

最佳答案

您关心的是减少测试执行时间。您可以通过多种方式做到这一点。

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

定义强制测试用例后,您可以使用测试用例分组来创建套件。如果并行运行这些组,将会减少大量时间。但是你的分组准备需要很巧妙,这样每个小组都可以花费相似的时间。这将是最好的方法。

对于 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>

If we calculate here..Suppose, every test case requires 3 sec for execution.

For 5000*3 = 15000sec/3600 = 4.166 hr.

Now, using parallel processing it will take (5000/20)*3 = 750sec/3600 = 0.21hr or `12.5 minutes only.

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

适用于 TestNG、Appium、Jenkins 等

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

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

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

For analyzing, reporting and showing the status of code coverage, execution time, various types of tools are used. JaCoCo is most popular among them. There are also some tools like Cobertura, Arquillian etc.

此处给出了使用 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

关于java - 如何分析 junit 测试套件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392235/

相关文章:

android - ACTION_IMAGE_CAPTURE Intent 返回的缩略图大小是多少

java - getFragmentManager().findFragmentById 返回 null

java - 从 tr 标签中找到一个复选框并在 Selenium(java) 中选择它

具有多个测试客户端的 django-webtest

java - 使用java中的http header 在spring security中传递基本身份验证详细信息

java - "R cannot be resolved to a variable "即使在安装新的 Eclipse 之后

java - 试图在java中找到长数据类型的范围

java - 使用Java代码读取Android Manifest文件

java - Android - 无法修复折叠工具栏布局中的工具栏

ruby-on-rails - RSPec 和 Rails 3 的 Mising 模板错误