【发布时间】:2021-02-23 14:11:46
【问题描述】:
我正在尝试使用 GitHub Actions 运行 testthat 脚本。
我想测试我的函数的功能,它允许它与(许多)外部包组合。现在我想为R CMD Check 测试这些外部包,但我不想一般加载外部包(即将它们放入描述中)——毕竟大多数人不会使用这些外部包。
任何想法如何在测试文件中包含外部包而不是在说明中?
谢谢!
【问题讨论】:
我正在尝试使用 GitHub Actions 运行 testthat 脚本。
我想测试我的函数的功能,它允许它与(许多)外部包组合。现在我想为R CMD Check 测试这些外部包,但我不想一般加载外部包(即将它们放入描述中)——毕竟大多数人不会使用这些外部包。
任何想法如何在测试文件中包含外部包而不是在说明中?
谢谢!
【问题讨论】:
我认为你描述了一个非常标准的 Suggests 用法。
我看到了两个相关但又可以分开的问题:
您想使用 CI 测试某些东西,在本例中是 GHA。没事儿。因为您控制代码的执行,您可以将您的代码从测试运行程序移到,例如,inst/examples 并显式调用它。这样,“是使用未声明代码的包”的标准检查通过 inst/examples 未检查
您不想强迫其他人必须加载这些包。这也很好,为此我们有Suggests:!阅读编写 R 扩展的第 1.1 节,了解所有详细的语义。 如果您的包通过测试调用其他包,每个R CMD check 都会触及这个(以及外部包),因此它们必须声明。但是你已经知道只有“某些”人会在“某些时候”使用这个:正是Suggests: 所做的,你用if (requireNamespace(pkgHere, quietly=TRUE)) 括起来使用。 p>
您可以选择任何一种方式,甚至可以将两者结合使用。但是你不能从测试中调用包而不声明它们。
【讨论】: