r - 测试软件QuickCheck有R接口(interface)吗?

标签 r perl testing quickcheck testthat

既然我发现自己花了这么多时间在 R 中编程,我真的很想回到自动化测试(这是我在 Perl 中养成的习惯)。除了用户友好之外,我还特别感兴趣能够为测试生成随机输入,例如 Perl 的 Test::LectroTest。或 Haskell 的 QuickCheck . R 有类似的东西吗?

最佳答案

查看 R 包 quickcheck on GitHub .

Test::LectroTest 一样,R 包quickcheckQuickCheck 的端口,这是 Koen Claessen 和 John Hughes 为 Haskell 编写的。

除了 QuickCheck 功能外,quickcheck 还向 Hadley Wickam 的热门 testthat 致敬。 R 包,通过有意地合并他的“期望”函数(他们称之为“断言”)。除了数字和字符串测试之外,还有针对失败和警告等的测试。

这是一个使用它的简单示例:

library(quickcheck)

my_square <- function(x){x^2}        # the function to test

test( function(x = rinteger())  min(my_square(x)) >= 0 )
# Pass  function (x = rinteger())  
#  min(my_square(x)) >= 0 
# [1] TRUE

test( function(x = rdouble())
      all.equal(
                my_square(x),
                x^2
      )
)
# Pass  function (x = rdouble())  
#  all.equal(my_square(x), x^2) 
# [1] TRUE

第一个测试确保 my_square 生成的任何内容都是肯定的。第二个测试实际上复制了 my_square 的功能并检查每个输出以确保它是正确的。

请注意,rinteger() 生成一个由整数值组成的任意长度的向量。可以使用 rcharacterrdoublermatrix 等函数生成其他随机生成的输入数据。


关于r - 测试软件QuickCheck有R接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28888019/

相关文章:

java - Gradle:如何列出所有 "given tests"

java - 如何手动生成JUnit测试报告

r - 您可以在新环境中运行 Sweave 吗?

html - 使用 Template Toolkit 在不使用多个循环的情况下勾选复选框

windows - Windows cmd 如何在运行 Perl 单行程序时转换命令行?

linux - 传递其中包含点运算符的命令行参数

java - 如果其中的对象过多,开发服务器上的数据存储访问速度会非常慢

r - 在 R 中处理具有相同 Id(键)列值的多行

R - 匹配数据帧

r - 在ggplot2中明确设置面板尺寸(不仅是绘图尺寸)