如何分析在 Maven Surefire 中运行的测试的挂钟时间

Posted

技术标签:

【中文标题】如何分析在 Maven Surefire 中运行的测试的挂钟时间【英文标题】:How to profile wall clock time of tests running in maven surefire 【发布时间】:2013-02-01 15:18:16 【问题描述】:

我正在尝试分析从maven surefire 运行的一组测试。我发现了诸如this 和this 之类的相关问题,这完全不是我想要的。

有人可以推荐一个分析器,它可以让我测量测试套件的方法调用的挂钟持续时间(也就是说,我没有尝试将分析器附加到已经运行的应用程序)?

【问题讨论】:

当你从 IntelliJ 运行单元测试时,它会告诉你每个测试花费了多长时间。它可以读取您的 Maven 配置以查找要运行的测试。 我正在寻找每个方法的故障,而不是每个测试。我在 YourKit 上取得了一些成功。如果我弄清楚了,我会在适当的时候回答我自己的问题:) 例如,您希望能够在 YourKit 中运行所有测试。我将再次在项目窗口中选择一组测试,然后按下 IntelliJ 中的 YourKit 配置文件按钮。 我没有任何 JUnit 套件(还有其他方法可以从 intellij 运行多个测试吗?)我让 maven surefire 使用 @Category 注释运行不同的测试。此外,maven 正在并行运行测试,这可能会影响执行时间。 如果你“运行”一个包,甚至你的根,它会运行它下面的所有东西。我确信 IntelliJ 不是唯一可以做到这一点的 IDE,但我不太了解其他 IDE。 【参考方案1】:

This answer 帮助了我。我已将以下内容添加到我的pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <argLine>-agentpath:/home/jshaw/yjp-12.0.2/bin/linux-x86-64/libyjpagent.so=tracing,onexit=snapshot,disablej2ee</argLine>
    </configuration>
</plugin>

然后你可以在maven运行完成后从YourKit profiler加载快照。

【讨论】:

以上是关于如何分析在 Maven Surefire 中运行的测试的挂钟时间的主要内容,如果未能解决你的问题,请参考以下文章

如何使 maven cobertura 和 surefire 插件一起工作?

如何使用 Maven surefire 排除具有给定类别的所有 JUnit4 测试?

如何参数化 Maven surefire 插件,以便我可以选择运行哪些 TestNG 套件

在 Jenkins 中运行 mvn 测试时 maven-surefire-plugin 的 Java 版本问题

Spring Boot 无法运行 maven-surefire-plugin ClassNotFoundException org.apache.maven.surefire.booter.Forke

使用 Maven Surefire 运行依赖项 jar 中包含的 JUnit 测试