如何在 NetBeans Maven 项目中分析 JUnit 测试?

Posted

技术标签:

【中文标题】如何在 NetBeans Maven 项目中分析 JUnit 测试?【英文标题】:How do I profile a JUnit test in a NetBeans Maven project? 【发布时间】:2011-11-17 13:03:39 【问题描述】:

我尝试过这样做,但似乎不可能,因为您只能分析主要方法。我什至在使用测试中添加了一个 main 方法,但它只显示了该 main 方法的时间。 :(

我正在使用模拟和抽象测试用例,所以我无法将其转换为 main 方法。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以使用 java 安装中的jvisualvm。

此工具可以监控和分析任何正在运行的 java 应用程序。

【讨论】:

我真的很想知道为什么我对此投了反对票 :) jvisualvm 可能不是最好的分析器,但它具有很好的基本功能。【参考方案2】:

如果您试图获得您正在测试的代码的性能结果,这通常是通过分析实际应用程序在真实环境(容器、可执行文件等)中运行来完成的。因此,我'd 认为尝试通过单元测试来分析实际应用程序代码是不正确的方法,因为您可能无法获得真正的性能细节。这有多种原因:

与您在单元测试中模拟的其他对象的交互实际上确实需要时间并消耗资源,因此您无法获得性能详细信息。 Java 运行时会在运行时优化字节码,这样性能通常会随着时间的推移而提高 我确定还有其他人;这些是我在喝咖啡前想到的。

如果您实际上是在尝试分析您的单元测试用例,我不得不问您为什么要这样做。只要他们运行“足够快”(这是一个主观术语,但“不到 10 分钟”通常是一个很好的代理值)能够让开发人员及时反馈他们是通过还是失败,那么这就足够了...

【讨论】:

【参考方案3】:

我建议使用 JMH + 分析器(spf4j,飞行记录器)

您可以在以下位置查看有关如何执行此操作的示例: http://zolyfarkas.github.io/spf4j/xref-test/org/spf4j/JmhTest.html

如果您将 jenkins 与 jmh 插件一起使用:https://github.com/blackboard/jmh-jenkins 您可以对自己的表现进行趋势分析,并且始终可以查看分析器数据进行调查。

【讨论】:

【参考方案4】:

我发现 Junit 框架是一个方便的地方来进行临时性能测试。当然,有更好的方法来管理它,但如果你所追求的只是修复一个热点并在这样做的同时想要一个配置文件,那就足够了。我的做法是:

运行单元测试 在它运行时,附加分析器

您可能想在前面添加一个睡眠,以便您有时间附加。又快又脏。

【讨论】:

以上是关于如何在 NetBeans Maven 项目中分析 JUnit 测试?的主要内容,如果未能解决你的问题,请参考以下文章

将 maven 项目导入 netbeans

如何从启用优化(发布模式)构建的二进制文件中分析故障转储?

在 netbeans 7 中,如何在构建 maven 项目时跳过测试并添加 maven 附加参数?

如何在 Netbeans 中创建 Java 项目,而不使用 Maven 作为默认值?

如何使用 GitHub 中的 Maven 从 NetBeans 项目迁移到 Java CI?

从命令行运行 Netbeans maven 项目?