是否有测试软件QuickCheck的R端口?

时间:2015-03-05 21:24:37

标签: r perl testing quickcheck testthat

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

1 个答案:

答案 0 :(得分:3)

参见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等函数生成。