如何通过IntellJ调试器将变量转储/复制为代码?

时间:2018-04-18 13:55:42

标签: scala debugging intellij-idea copy-paste

我有一个scala项目,我通过IntellJ使用调试器。

有时候,尤其是在编写单元测试时,我采用简单的方法来实现一些逻辑并稍后编写预期的对象。

基本上我做:

 assert({} == actualValue)

然后我在某个时候想要调试到那一点并通过以下方式复制粘贴actualValue的值:

Copy value from intellJ IDE through the debugger

这样我就可以这样插入:

 val expected = FinishedRun(
  id = "20180213165959sCdJr",
  createdAt = "2018-02-13T16:59:59.570+0000",
  finishedAt = "2018-02-13T17:00:18.118+0000"
)

然而,这就是我实际粘贴的内容:

 FinishedRun(20180213165959sCdJr,Tue Feb 13 17:59:59 CET 2018,Tue Feb 13 18:00:18 CET 2018)

然后我必须再次调整这些值,我想避免这种情况。有没有办法可以转储案例类或将其复制为代码?

为了完整起见,这是带有伴随对象的示例案例类。答案应该适用于任何对象/变量:

case class FinishedRun
(
  id: String,
  createdAt: Date,
  finishedAt: Date
)

object FinishedRun {

  def apply(id: String,
            createdAt: String,
            finishedAt: String
           ): FinishedRun = {

    new FinishedRun(id, createdAt = parseDate(createdAt), finishedAt = parseDate(finishedAt))
  }
}

1 个答案:

答案 0 :(得分:0)

尝试定义在Java Type Renderers设置(或从变量上下文菜单)中呈现的自定义类型,并为您需要的此类型的值创建呈现: enter image description here enter image description here