RUnitの使い方メモ

単体テストというものの有難味が分かり始めた。Rでの単体テストフレームワークであるRUnitの使い方をメモる。
テスト駆動開発なので、まずはテストを書く。

test.func1 <- function(){
  checkEquals(func1(), 1, "func1 : NG")
}

test.func2 <- function(){
  checkEquals(func2(), 2, "func2 : NG")
}

これを、runit-funcs.rとして保存。関数名とファイル名は、RUnitの関数がテストコードを認識するために重要。
次に、関数を実装。

func1 <- function(){
  1
}
func2 <- function(){
  3 # test will fail
}

これを適当な名前で保存。最後に、テストの実行コード。

library(RUnit)

source("funcs.r")

test.dir <- getwd()
suite    <- defineTestSuite("runit sample", test.dir)
result   <- runTestSuite(suite)
printTextProtocol(result, showDetails = TRUE)

defineTestSuite でテストスイートを定義。runTestSuite でテスト実行。テストスイートは、

を持っている。デフォルトでは、

  • テストコードの書いてあるファイル名の正規表現="^runit.+\\.[rR]$"
  • テスト用関数名の正規表現="^test.+"

となっているが、 defineTestSuite の引数で変更出来る。