现在我发现自己花了很多时间在 R 中进行编程,我真的很想回到自动化测试(这是我在 Perl 中养成的习惯)。除了用户友好之外,我还对能够为 PerlTest::LectroTest
或 Haskell 的QuickCheck等测试生成随机输入特别感兴趣。有什么类似的R
吗?
问问题
208 次
1 回答
3
quickcheck
请参阅GitHub 上的 R 包。
就像Test::LectroTest
,R 包quickcheck
是QuickCheck的一个端口,它是 Koen Claessen 和 John Hughes 为 Haskell 编写的。
除了 QuickCheck 功能之外,还通过有意结合他的“期望”函数(他们称之为“断言”)quickcheck
来向 Hadley Wickam 的流行R 包致敬。testthat
除了数字和字符串测试之外,还有对失败和警告等的测试。
这是一个使用它的简单示例:
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()
会产生一个由整数值组成的任意长度的向量。其他随机生成的输入数据可以使用 、 和 等rcharacter
函数rdouble
生成rmatrix
。
于 2015-03-05T21:24:37.120 回答