gpt4 book ai didi

r - 在 RStudio 中调试 'testthat' 测试

转载 作者:行者123 更新时间:2023-11-28 19:41:05 24 4
gpt4 key购买 nike

是否可以在运行 testthat 测试时调用 RStudio 中的调试器?我一直无法找到允许这样做的设置(设置中“使用 devtools 包功能的各种组合”,点击“Build -> More”中的“Test Package”选项"菜单,在控制台中运行 test(),调用 browser() 等)但还没有找到方法。

我还发现自己在测试时迷失了很多,不确定正在运行的代码是否已安装在系统库中(通过执行“构建和重新加载”),或者正在原位运行来自本地 R 目录,或者什么 - 有时 RStudio 提示在重建包之前无法设置断点(所以我怀疑是前者)或没有(所以我怀疑是后者) .不确定这个问题是否与我的主要问题密切相关。

在没有找到进入调试器的方法的情况下,我最终将测试代码粘贴到控制台并以一种非常临时的方式工作,基本上解决了我的 TDD 习惯。因此,我们将不胜感激任何建议 - 如果无法调用调试器,是否有任何建议的解决方法?

我在 OS X 上以本地模式使用 R 3.2.1 运行 RStudio 版本 0.99.447。

编辑 - 我也很想知道有关这些选项的更多背景信息,例如“选项 X 永远不会支持调试,因为它在 fork 进程中运行,请尝试使用其他选项 Y。”

更新 - 在这里没有回复,我也在 https://support.rstudio.com/hc/communities/public/questions/204779797-Debugging-testthat-tests-in-RStudio 询问过(我也没有收到任何回复)。

最佳答案

以下对我有用:

  1. 在单元测试的测试中的某处插入对 browser() 的调用。
  2. 从 RStudio 控制台运行 devtools::test()(而不是使用 UI 中的“测试包”菜单项)

然后,当测试运行器点击 browser() 调用时,您应该能够使用 environment browser并单步执行代码。

我还没有找到让 testthat 在断点处停止的方法,但是插入 browser() 调用是一个非常接近的替代方法。

要绝对确保在加载包时从一致的状态开始,您可以关闭 RStudio,重新打开它,运行“清理和重建”,然后 devtools::test( )

最后,如果您在 RStudio 包中工作,您可能需要查看来自 RStudio support 的以下建议:

In order to debug effectively in your package, you’ll also want to ensure that your package is compiled with the --with-keep.source option. This option is the default for new packages in RStudio; if you need to set it manually, it can be found in Tools -> Project Options -> Build Tools.

关于r - 在 RStudio 中调试 'testthat' 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31548796/

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