【问题标题】:R Source file location problem while using testthat使用testthat时的R源文件位置问题
【发布时间】:2018-10-03 07:15:53
【问题描述】:

我正在尝试设置 testthat 单元测试框架,但在正确获取源文件位置时遇到了一些麻烦。

我的包文件夹结构如下:

.\R\abc.R
.\R\def.R
.\tests\testthat\test_01.R

在我的测试用例文件 test_01.R 中,我需要导入 abc.R。我设法通过指定如下的相对路径来完成这项工作:

'../../R/abc.R'

现在可以从我的测试用例中成功获取 abc.R 文件。但是,它在 abc.R 尝试获取 def.R 的步骤失败了。我认为这是因为工作目录被 testthat 设置为 ./tests/testthat。

我能想到的解决方法是向 def.R 添加一个相对路径“../../R/”,但这在我看来是一个糟糕的解决方案,因为当我直接运行 abc.R 时它会中断.而且我的包里还有很多像 abc.R 和 def.R 这样的文件。

有没有更优雅的方式来处理这个问题?

对不起,如果这是一个简单的问题,因为我还是 R 新手。

【问题讨论】:

  • 我仍然不完全确定您在做什么,但听起来您正在尝试直接访问包源文件。不要那样做。应将包视为独立的、不透明的 blob。您通过其导出的函数/对象与它对话,并通过运行这些函数并查看它们是否执行它们应该执行的操作来测试它。

标签: r testthat


【解决方案1】:

在./tests/里面应该有一个名为testthat.R

的文件

在此文件中,您可以添加 3 行:

library(testthat)
library(yourLibraryName)

test_check("yourLibraryName")

当然用你的包名替换“yourLibraryName”。

然后你的包导出的所有函数都将被加载,测试将能够使用它们。

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2014-09-09
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多