testthat和roxygen用于不是包的分析项目

okxuctiv  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(79)

当我使用一个不是包的R项目时,我试图找出如何使用一些devtools功能,如testthat,roxygen等。在“R Packages(2 e)”一书中,有很好的例子可以说明如何使用所有这些功能。但是当我试图在一个不是包的项目中使用这些功能时,我会收到错误消息,例如:
test()package_file()中的错误:!找不到包根目录。n是否在包内?请运行rlang::last_trace()查看错误发生的位置。
我在一个项目中工作,我没有将其设置为一个包。usethis包文档明确提到了这个选项,但我找不到任何实际工作的例子。我能找到的所有文档都涉及包开发。

gopyfrb3

gopyfrb31#

如果你只是设置一个包,这可能是有意义的-它使生活更容易,因为roxygen2testthat大多数都是设计来处理包的。如果你使用RStudio,你也可以轻松地触发BuiltCheck*-按钮来创建roxygen文档或检查你的包。
正如Karolis在评论中提到的,一个R包只不过是有一个
DESCRIPTION文件和一个R文件夹,其中存储了您的R文件。(当您想要进行测试时,还有一个文件夹tests**)
但是如果你不想设置一个包,你当然也可以在一个普通的项目中使用testthat。
只需编写一个测试并将其存储在.R文件中。
例如,把这个测试(当然用更有用的东西替换它)放在R文件my_test.R中,假设它在一个名为tests的文件夹中。

testthat::expect_identical(1,1)

然后你可以调用test_file()

testthat::test_file(path = "tests/my_test.R")

你会得到这样的输出:
[失败0|警告0|跳过0|通过1 ]
如果您有多个包含测试的文件,则只需调用test_dir()来检查整个文件夹
因此,要检查tests文件夹中的所有文件,您可以这样写:

testthat::test_dir(path = "tests")

注意,在你的测试文件中,你必须先source你的代码,否则testthat没有加载你定义的函数。使用一个包你不必这样做。

source("/R/my_code.R")
test_that("Add", 
{
   expect_equal(my_add_function(1,1), 2)
})

因此,您必须源代码my_code.R,以便加载my_add_function函数,并使用testthat对其进行测试。(正如在包中提到的那样,您不需要源代码内容)

相关问题