gpt4 book ai didi

java - 当应用程序停止时,我们是否可以检测到正在调用 toString() 以响应调试器请求?

转载 作者:行者123 更新时间:2023-12-02 01:25:25 25 4
gpt4 key购买 nike

我有使用 toString() 来针对黄金大师测试单元测试输出的代码(期望特定输出)。同时,当我调试所述单元测试时, toString() 的输出有点简洁,我希望在调试器输出中显示更广泛/友好的信息(变量显示、 watch 等)。要做的就是检测 toString() 被调用作为调试器评估的结果,而不是作为在正常代码路径中运行的结果。

我尝试在调用 toString() 时转储堆栈和线程信息。它始终在正在调试的同一上下文(调用堆栈和线程)中调用。调用 toString() 时,没有“特殊”方法被压入堆栈 - toString() 出现,然后是“当前”执行方法。

我当前的解决方案是根据需要更改 toString() 的实现。不过,这很乏味,而且很容易出错,因为如果我忘记在完整的单元测试运行之前重置它,我会遇到很多错误。

一个可能的解决方案是获取 toString() 调用上方的堆栈帧,获取其文件和行号,并检查该行上是否存在对 toString() 的直接或隐式调用。我认为检测所有可能创建隐式调用的情况很容易出错,所以我宁愿不走这条路。

如果有帮助,我正在 IntelliJ IDEA 调试器中运行 Java 代码。

我希望有一些我忽略的 API 或技术可以给我这些信息。

最佳答案

请考虑使用Type Renderers IntelliJ IDEA 中的功能并禁用调试器的 toString() 评估。

关于java - 当应用程序停止时,我们是否可以检测到正在调用 toString() 以响应调试器请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57023962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com