问题标签 [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 回答
1250 浏览

r - 在对 travis 进行测试的测试期间使用 load() 从 .RData 文件中加载数据

我正在使用该testthat包通过我正在开发的 R 包运行单元测试。我遇到了一个奇怪的情况,我无法弄清楚我做错了什么。

我正在尝试加载一些测试数据(存储在数据框中)和一些预先计算的答案(同样,存储在数据框中)来测试一些函数并比较结果。我已将两组数据保存为 .Rdata 文件(在 tests/testthat/ 目录中),并在运行测试之前将它们加载load(file.path('filename.RData'))

当我在我的计算机上运行测试时,测试运行良好。但是当他们在 travis 上运行时,我得到了错误:

我肯定遗漏了一些非常简单的东西,但是我已经尝试了所有明显的东西(从目录开头指定相对路径等)有没有人对如何让 travis 能够加载这些文件有任何想法?

这是有问题的 testthat 文件的内容:

0 投票
0 回答
774 浏览

r - 测试在命名空间中找不到函数

我有一个 R 包的测试套件,我很确定它曾经可以工作,但现在不行了。

问题似乎是测试函数找不到以 . 开头的函数。位于包命名空间中。

一个示例测试在这里。测试功能看不到.make.mvn.prior。即使它是在这里定义的

一种解决方法是使用 texmex:::.make.mvn.prior 但我相信 ::: 的使用是不赞成的。

我将不胜感激任何见解。

抱歉,如果这是重复的。正在寻找。和 ::: 效率不高。

0 投票
0 回答
58 浏览

r - r - 使用 testthat 测试函数参数的正确跨平台方法是什么

0 投票
1 回答
1098 浏览

r - 使用 RStudio 自动记录 Shiny 应用程序的功能

我现在正在开发一个闪亮的应用程序,并且功能比我预期的要多。我计划开始自动化测试,testthat我很想用roxygen2.

由于我使用的是 RStudio,因此我开始了一个新的闪亮应用项目。现在我想知道,既然我想要完成文档和测试,是否应该在 RStudio 中启动一个来获取所有devtools功能。

我想知道,如何正确记录函数,就像在build, 中一样来测试示例。加上使用testthat功能。我怎样才能建立这样的项目?

0 投票
1 回答
1028 浏览

r - 比较data_frames时如何在testthat中设置expect_equal的容差?

当我检查两个 data_frames 是否相等时,我无法使用 testthat 的容差参数。这是一个包含两个数据框的简单示例:

当我检查相等性时,即使容差值足够高,testthat 也会引发错误:

比较各个向量时不会引发错误:

有什么建议么?我假设我滥用了 expect_equal 函数,但除了在数据框的各个列上运行 expect_equal 之外,我不确定如何解决。

这是我正在使用的软件包版本:

0 投票
0 回答
1720 浏览

r - 为什么这个简单的 data.table 测试失败了?如何解决?

假设我写了一个包“ hello”......

...使用单个导出函数:

为了使这个包工作,我还添加

DESCRIPTION文件。

现在我想为它写一个单元测试:

...在文件中tests/testthat/test-hello.R

当我运行测试时,它们失败了:

为什么??testthat尽管我用谷歌搜索了和之间不兼容的其他情况data.table,但它们与:=操作员无关。他们指责testthat包裹。


这是我的会话信息:

有什么解决方法吗?放弃data.table对我来说不是一个选择,因为我的库处理非常大的数据集。

0 投票
1 回答
530 浏览

r - R tryCatch with testthat 期望

我有以下功能:

在 a 中调用它,tryCatch()以便expr优雅地处理其中的任何错误条件。

它适用于标准错误条件:

但是,它不会捕获testthat预期错误(这对于我的特定用例来说是首选):

或更简单地说:

未捕获期望错误。

从 R 3.2.2 升级到 R 3.3.0 后出现此问题 - 即在 R 3.2.2 中发现了预期错误。

有没有办法让R 3.3.0 中testthat的期望得到满足?tryCatch()

0 投票
0 回答
161 浏览

r - 阅读登录 Travis CI 的详细测试

我正在开发一个使用 Travis CI 测试R 项目。当我在本地运行测试时,所有测试都通过了。当这些测试在 Travis CI 上运行时,一些测试会失败。testthat

问题是我看不到测试运行后出现的详细错误消息。

我确实看到了 Travis 错误的“顶部”:

我没有在 Travis CI 上看到错误消息的“底部”。我在这里举了一个例子,所以你知道我希望看到什么:

我期望/希望我能掌握 Travis CI 的“下部”。我希望/希望某处有一个日志文件,但我找不到在哪里。

[编辑:添加此] 请注意,有时我会看到类似下面示例输出的输出。这可能是一个单独的问题,但我也很想在那里看到所有输出行:

0 投票
1 回答
159 浏览

r - 在测试时避免由于 readline() 导致的暂停

我正在使用包中的test_dir()函数在 R 中运行测试testthat。在一些测试脚本中,有调用 的函数,readline()在交互模式下,它会导致测试暂停并等待用户输入。调用的函数readline()不是我自己的,我对它们没有任何影响。用户输入与这些功能的输出无关。

有没有办法在测试期间避免这些暂停?

想到的方法,但我不知道如何实现它们:

  • 在 R 运行时禁用交互模式
  • 使用testthat包中的另一个以非交互模式运行脚本的函数
  • 以某种方式转移stdin到终端以外的其他东西(??)
  • 包装readline()在另一个脚本中调用的函数,该脚本在我的测试脚本中以非交互模式调用,并使结果可用

仅使用命令行进行测试Rscript是一种选择,但我宁愿留在 RStudio 工作流程中。

======

示例代码

0 投票
1 回答
114 浏览

r - “随机单元”测试

我想在每次测试时用一组新的数字测试一个函数。这个想法是在我没有预料到的情况下实现失败。

问题是当我收到失败时,我不知道是什么值ab触发了失败。

我可以通过逆向工程为特定操作实现这一点expect_lte

错误:bad_hypotenuse_length(a, b) 不小于 a + b。差异:0.143。a = 1.1 b = 2.35

有没有办法使用现有的函数来返回类似的信息?也就是说,返回与 相同expect_...,但还包括传递的参数的值。(如果 `testthat` 测试在 `R` 中失败,则打印自定义诊断信息的解决方案要么打印信息,要么不管测试结果如何,或者不适合现有测试。)