没有测试的单元测试

Joh*_*ohn 4 unit-testing r

有一件事让我感到奇怪。我读过一些关于单元测试的内容,我读到的所有内容都与 testthat(为单元测试创​​建的包)密切相关。但是可以肯定的是,R 中有其他方法可以在不使用 testthat 包的情况下进行单元测试。那么为什么它们如此不受欢迎以至于很难找到关于它的文章呢?压倒单元测试市场的 testthat 包的主要优势是什么?

Fea*_*ter 6

前段时间我和你有同样的想法。我最终偶然发现了这篇关于 R 中单元测试的RBloggers 文章

人们使用 Hadley 和 RStudio 团队提供的软件包的主要原因是它们易于使用、编写良好且受支持,而且其中许多似乎内置于 RStudio 桌面中,这是最流行的 R IDE。此外,正如@Roland 所说,他们具有营销优势。不利的一面是,它们几乎总是拖入大量依赖项。快速查看测试的CRAN 页面,显示不少于 12 个必需的包(“导入”)。如果您使用持续集成,您会发现这开始有点令人讨厌,并且每次都必须等待容器操作系统安装它们。有时你可以缓存这些,但我离题了。RStudio 团队的包也可能比许多其他 R 包更容易发生变化。

遗憾的是,由于 testthat 如此流行,您将很难找到任何其他单元测试包的指南和教程。我刚刚将我的一个包从 testthat 切换到一个名为tinytest的包(在第一个链接中提到)。我强烈推荐它。它只引入两个包作为依赖项,这两个包都存在于 R 的核心包中。它的测试功能比 testthat 少一些,但是如果您可以进行合乎逻辑的评估,则expect_true()可以填补空白。tinytest 也有优秀的文档。

  • 令人费解的是,在 R 单元测试中找到简单信息(或基本指南)是多么困难,/tests/ 中的所有 *.R 文件都是针对包运行的,任何意外行为都会导致单元测试失败(该博客文章中的简短指针#1)。所有指南都只是指向“RUnit”或“testthat”,并且在许多情况下只会向包引入大量膨胀(就像您提到的,“testthat”导入了很多 - 在撰写本文时,已经 18+ 非- 基础包)。感谢您的博客链接。 (2认同)