问题标签 [testthat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5034 浏览

r - 如何为 R CMD 检查设置 testthat?

显然有两种方法可以testthatR CMD check. 我也不能上班。

方法#1:(可能已弃用)

根据devtools wiki

开发包时,将测试放在 inst/tests 中,然后创建文件 tests/run-all.R(注意必须是大写的 R),其中包含以下代码:

这将评估您在包命名空间中的测试(因此您可以测试未导出的函数),如果有任何测试失败,它将引发错误。这意味着您将看到完整的测试失败报告,除非所有测试都通过,否则 R CMD 检查不会通过。

整个包裹都在这里。其中有两个文件:

我的描述是

安装软件包后,我可以很好地运行测试(正如预期的那样,它们失败了)。

但是 anR CMD check不运行测试。

我认为 PDF 警告与此无关,但如果需要,我可以提供更多详细信息。

方法#2:(出血边缘)

根据存储库的README 文件testthat

现在,推荐的做法是将您的测试放在 tests/testthat 中,然后通过将以下代码放在 tests/test-all.R 中来确保 R CMD 检查运行:

所以我确保我安装了最新版本的 testthat:

然后换了包。你可以在这里得到这个版本。我将这两个文件修改为

然后将DESCRIPTION文件中的包版本更新为0.1.2,我可以构建它,安装它,并使用testthat它来检查它并获得与以前相同的输出。因此,就目前而言,它似乎在testthat起作用。

但是, R CMD check 仍然不运行测试:

所以问题:

我究竟做错了什么?我更喜欢方法 2 的解决方案,但我会采取任何一个!

0 投票
2 回答
310 浏览

r - 针对存储的 R 对象进行测试

是否有一个简单的工作流程来编写将对象存储为 .rds 或 .rda 的测试,以便将来运行测试可以比较代码执行的结果与存储的对象?这样可以很容易地检查返回一些复杂值的函数是否仍按应有的方式运行。

例如,类似:

其中,如果 *extdata/test_obj.res.rds* 不存在,将在 *inst/extdata/test_obj.res.rds* 中创建它,res从上面开始,但如果它确实存在,将相同/all.equal 等. 新生成的对象与从 rds 中恢复的对象。

我会发现这样的测试非常有用,我有点惊讶 RUnit/svUnit / testthat 没有实现某种东西(我希望他们这样做,但我还没有找到它)。

testthat::make_expectation很接近,但我更喜欢自动存储/检索 rds 而不是将文本表示复制粘贴到文件中,我认为这是你应该使用的方式testthat::make_expectation(我想我可以通过管道将 stdout() 传输到 . R 文件,但即便如此,仍有一些自动化可以促进该过程)。

0 投票
1 回答
2324 浏览

r - R - 使用测试目录外的数据文件进行测试

我正在使用testthat类似于以下的文件树来测试一个包:

test1.r文件中,我需要将该data/testhaplom.out文件用作某个函数的输入数据,但如果我这样做test_file(test1.r),它会更改到inst/test目录并且看不到数据文件,并给出以下错误:

0 投票
1 回答
697 浏览

r - 使用 Roxygen 和 testthat,使内部辅助函数可用于 R CMD 检查期间调用的测试用例的正确方法是什么?

我正在创建一个 R 包,并发现将一个文件中的部分逻辑分解为我在同一个文件中定义的内部辅助函数很有用。我有一种特殊情况,我的函数通过match.fun(). 由于它们对其他功能或人员没有用处,因此我不想将它们放在单独的文件中,也不想导出它们。

我所有的测试案例都使用test_dir(). 当我不导出这些函数时,我的测试用例在 R CMD 检查期间失败。

看完这篇文章后,如果我明确地将导出条目导出或添加到 NAMESPACE,我就能让事情正常工作,但我又不想导出这些。

有没有更好的方法可以做到这一点并且不需要我导出?(我承认问题的根源可能是match.fun()并且对在运行时调用函数的其他方式持开放态度。)

0 投票
1 回答
955 浏览

r - R:本地环境中 testthat test_file() 的问题

我在本地环境中调用 test_file 时遇到问题。

工作正常。

工作正常。

错误:找不到对象“newvar”

simple.test.R 的内容很简单:

帮助表示赞赏!谢谢。


编辑:

我要做的是从 shinyAce ( https://github.com/trestletech/shinyAce ) 读取一些代码,并检查它是否有效(满足一些定义的要求)。我正在使用“local()”,因此在 shinyAce 块中定义的任何分配变量都不会保留在环境中。

0 投票
1 回答
976 浏览

r - testthat:同时处理警告和值

处理生成警告但又返回值的调用的最佳方法是什么?

例如

我想编写测试,以便对 log(-1) 的调用应该(a)生成警告和(b)返回值 NaN。上面的方法有效,但看到底部的“警告信息:”可能会使人们感到困惑。我应该暂时禁止警告吗?

0 投票
0 回答
148 浏览

r - 即使 test_package 通过了 auto_test_package 也会抛出错误

我正在尝试使用testthat. testthat和都devtools使用 安装install_github,测试代码在tests/testthattest-all.Rtests。使用 R CMD 检查我得到

  • 检查测试...运行'test-all.R' OK

>test()
测试 FASTIN
加载 FASTIN
IO 测试:......

相似地

> test_package('FASTIN')
IO 测试:......

对我的第一次测试体验非常满意,我现在想使用 `auto_test_package' 自动监控进一步的开发,但是从包根目录调用 9it 会给出:

>auto_test_package('./')
IO 测试:......
摘要中的错误(路径,文件 = TRUE):指定的路径名​​不是文件:/Users/phil/Work/FASTIN-R/FASTIN-R /tests/testthat

我想这意味着测试运行但一旦完成就会出现问题?尝试手动设置它auto_test会产生相同的错误:

>auto_test('./R/', './tests/')
IO 测试:......
摘要中的错误(路径,文件 = TRUE):指定的路径名​​不是文件:/Users/phil/工作/FASTIN-R/FASTIN-R/tests/testthat

我尝试设置auto_test为使用test/testthat,但这次测试运行但也抛出错误......

auto_test('./R/','./tests/testthat/')
IO 测试:12
1. 错误:SI 导入正常工作-------- -------------------------------------------------- --------------------
nchar(SI.predators) > 0 & nchar(SI.preys) > 0 不正确
1: addSI(SI.predators = SI.捕食者, SI.preys = SI.preys, Frac.Coeffs.mean = Frac.Coeffs.mean, Frac.Coeffs.var = Frac.Coeffs.var) at test_io.R:10
2: stopifnot(nchar(SI.predators) > 0 & nchar(SI.preys) > 0) 在 /Users/phil/Work/FASTIN-R/FASTIN-R/R/DataIO.R:56
3: 停止(sprintf(ngettext(length(r), "% s is not TRUE", "%s are not all TRUE"), ch), call. = FALSE, domain = NA)

我在这里做错了什么?我有点困惑,并没有testthat在github上的代码中找到直接答案......

任何帮助将非常感激!干杯

0 投票
1 回答
661 浏览

r - r devtools test() 错误但 testthat test_file() 有效

我正在构建的包中有一个函数,它将十六进制代码分配给全球环境以供分析师使用......

我的单元测试代码是:

当我手动运行代码时,没有错误:

当我运行 test_file() 时也不会出错

但是,当我将测试作为 devtools 工作流程的一部分运行时:

任何人对为什么会发生这种情况以及如何解决这种情况有任何想法?

0 投票
4 回答
2418 浏览

r - 测试中是否有类似expect_no_warnings() 的东西?

我正在为在某些情况下会生成警告的函数编写测试。我想确保在其他条件下它不会产生警告。我没有看到一个明显的方法来轻松测试它testthat。我想我可以做类似的事情:

或使用options(warn=2),但我希望会有类似的东西:

我错过了一些明显的东西吗?

0 投票
1 回答
601 浏览

r - test_file() 有效,但 test() 因 data.table 而失败

我的问题类似于r devtools test() 错误,但 testthat test_file() 有效,但是我不确定@hadley 的评论是否也适用于此。

我创建了一个R 包的最小工作示例,其中测试单个文件可以testthat::test_file工作,但测试包devtools::test不能。

这是我的包中唯一的 R 文件R/a.R

这是我的测试文件inst/tests/test-a.R

运行时该测试通过test_file,但运行时devtools::test收到以下错误:

这是正确的行为还是应该被视为data.tableor中的错误devtools

这是我的环境:

更新。我已经更新了包的依赖项以正确依赖data.table 这里,但问题仍然存在。