java - 如何确定哪个测试挂起?

标签 java maven testing intellij-idea testng

我有一个挂起的测试...当我尝试从 Maven 运行测试时,它总是以 ManagedLedgerTest 结束,如下所示:

[INFO] Running org.apache.bookkeeper.client.PulsarMockReadHandle
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 s - in org.apache.bookkeeper.client.PulsarMockReadHandle
[INFO] Running org.apache.zookeeper.MockZooKeeper
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.063 s - in org.apache.zookeeper.MockZooKeeper
[INFO] Tests run: 73, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 23.832 s - in org.apache.bookkeeper.mledger.impl.ManagedLedgerTest

几个小时后,日志看起来仍然一样。当我在 ManagedLedgerTest 中运行测试时,它们都通过了。因此,在 ManagedLedgerTest 之后似乎还有一个测试仍在进行。 当我将代码推送到构建服务器时,我们看到完全相同的行为。 我尝试通过添加 -X 来以更详细的方式从 Maven 运行测试。参数,像这样: mvn install -DfailIfNoTests=false '-Dtest=!KafkaProducerSimpleConsumerTest,!PrimitiveSchemaTest,!BlobStoreManagedLedgerOffloaderTest' -pl '!pulsar-broker,!pulsar-proxy,!pulsar-brokeruth-sasl,!pulsar-io/kafka-connect-adaptor,!tests/pulsar-storm-test' -X

但是,我没有获得有关挂起内容的任何其他信息。 (当提供 -X 时,上面的输出是相同的。)

如何确定哪个测试挂起?

最佳答案

  1. 方式: 通过远程调试开始测试,查看surefire-documentation,了解如何做到这一点。

当测试挂起时,附加调试器(intellij、netbeans、eclipse...)并查看堆栈跟踪。

  • 方式: 创建运行测试的 java-vm 的 stackdump(使用 jstack)。其中一叠应该显示您的悬挂测试。
  • 关于java - 如何确定哪个测试挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60130047/

    相关文章:

    java - 从 long 转换为 string 时保留前导零

    Java连接到postgresql数据库

    Maven Surefire 插件丢失?

    maven - 我如何配置 Maven 以应对公司/VPN 和公共(public)存储库设置?

    unit-testing - 功能需求不佳且没有设计规范的单元测试有哪些技术?

    java - 在保持对文件的访问权限的同时编辑文件名在 JComboBox 中的显示方式

    java - 这个类是完全不可变的吗?

    reactjs - 测试组件的 Prop 时,比较值没有视觉差异

    java - Gradle:如何列出所有 "given tests"

    java - 背景图像不工作 javaFX