现在,我发现自己花了很多时间在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端口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28888019/

10-12 14:06