问题描述
我正在尝试使用GitHub Actions运行testthat
脚本。
我想测试一下我的功能的功能,该功能可以将其与(许多)外部软件包结合使用。现在,我想测试R CMD Check
的这些外部软件包,但我不想一般地加载这些外部软件包(即,将它们放入Description中)-毕竟,大多数人不会使用这些外部软件包。>
有什么想法如何仅在测试文件中包括外部软件包,而不在DESCRIPTION中包括外部软件包?
谢谢!
解决方法
我认为您描述的是Suggests
的非常标准的用法。
我看到两个相关但可分离的问题:
-
您想使用CI(在本例中为GHA)进行测试。那样就好。因为您控制代码的执行,所以您可以 将代码从测试运行程序移至
inst/examples
并进行显式调用。这样,由于未检查inst/examples
,所以通过了“是否使用未声明的代码包装”的标准检查 -
您不想强迫其他人加载这些软件包。那也很好,为此,我们有
Suggests:
!阅读关于编写R扩展的第1.1节,了解所有详细的语义。 如果您的程序包通过测试调用其他程序包,则每个R CMD check
都会触及此程序包(以及外部程序包),因此必须声明它们。但是您已经知道,只有“一些”人会愿意使用“某些时间”:这就是精确Suggests:
的作用,并且您将{{1}用括号括起来}。
您可以选择任意一种方式,甚至可以将两者结合使用。但是您不能从测试中调用包,也不能声明它们。