1

R でのプログラミングに多くの時間を費やしていることに気付いたので、自動テスト (Perl での習慣によって習得した) に戻りたいと思っています。Test::LectroTestユーザーフレンドリーであることに加えて、Perlや Haskell のQuickCheckなどのテスト用にランダムな入力を生成できることにも特に関心があります。に似たものはありRますか?

4

1 に答える 1

3

quickcheckGitHubの R パッケージを参照してください。

同様Test::LectroTestに、R パッケージは、 Koen Claessen と John Hughes が Haskell のために書いたQuickCheckquickcheckのポートです。

QuickCheck 機能に加えて、quickcheckHadley Wickam の人気のあるtestthatR パッケージに、彼の "expectation" 関数 (彼らは "assertions" と呼んでいます) を意図的に組み込むことで、うなずきます。数値テストと文字列テストに加えて、障害や警告などのテストがあります。

これを使用した簡単な例を次に示します。

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がすべて正であることを確認します。2 番目のテストでは、実際に の機能を複製し、my_squareすべての出力をチェックして、それが正しいことを確認します。

rinteger()は、整数値で構成される任意の長さのベクトルを生成することに注意してください。その他のランダムに生成された入力データは、 、 、 などの関数を使用して生成rcharacterできrdoubleますrmatrix


于 2015-03-05T21:24:37.120 に答える