有一件事让我感到奇怪。我读过一些关于单元测试的内容,我读到的所有内容都与 testthat(为单元测试创建的包)密切相关。但是可以肯定的是,R 中有其他方法可以在不使用 testthat 包的情况下进行单元测试。那么为什么它们如此不受欢迎以至于很难找到关于它的文章呢?压倒单元测试市场的 testthat 包的主要优势是什么?
前段时间我和你有同样的想法。我最终偶然发现了这篇关于 R 中单元测试的RBloggers 文章。
人们使用 Hadley 和 RStudio 团队提供的软件包的主要原因是它们易于使用、编写良好且受支持,而且其中许多似乎内置于 RStudio 桌面中,这是最流行的 R IDE。此外,正如@Roland 所说,他们具有营销优势。不利的一面是,它们几乎总是拖入大量依赖项。快速查看测试的CRAN 页面,显示不少于 12 个必需的包(“导入”)。如果您使用持续集成,您会发现这开始有点令人讨厌,并且每次都必须等待容器操作系统安装它们。有时你可以缓存这些,但我离题了。RStudio 团队的包也可能比许多其他 R 包更容易发生变化。
遗憾的是,由于 testthat 如此流行,您将很难找到任何其他单元测试包的指南和教程。我刚刚将我的一个包从 testthat 切换到一个名为tinytest的包(在第一个链接中提到)。我强烈推荐它。它只引入两个包作为依赖项,这两个包都存在于 R 的核心包中。它的测试功能比 testthat 少一些,但是如果您可以进行合乎逻辑的评估,则expect_true()可以填补空白。tinytest 也有优秀的文档。