Kouhei Sutou
kou****@cozmi*****
2008年 5月 14日 (水) 10:24:16 JST
須藤です。 2008/05/09 16:47 Tasuku SUENAGA <a****@razil*****>: > 将来的には、SennaQLという言語でテストを書く予定です。 これは、SennaQL上にテスティングフレームワークを構築してテストを 作成する、という感じになるのでしょうか? SennaQLは入出力はS式でいけるので、他のScheme処理系でテストを書 いて、SennaQLの処理系に入出力をつなげてテストをするということも できると思います。 こんなイメージです。 SennaQL: (define (plus x y) (if (zero? y) x (plus (+ x 1) (- y 1)))) Scheme: (call-with-process-io "senna /tmp/xxx" (lambda (input output) (display input "(plus 1 3)") (assert-equal 4 (read output)))) 昔はuimもこんな風にしてテストをしていました。 この方法のメリットはこんな感じです。 * SennaQLがそんなに便利関数を持っていなくても、Scheme処理系が 便利関数をたくさんもっていれば楽にテストが書ける * SennaQLが落ちてもテストが続行される * SennaQL用のテスティングフレームワークを作らなくてもよい デメリットはこんな感じです。 * 別プロセスを起動するので普通より遅い この方法を使うならScheme処理系は多言語対応しているのでGaucheが いいと思います。そういえば、Gauche用のテスティングフレームワーク としてGaUnitというのがあります。 http://www.cozmixng.org/~rwiki/index.rb?cmd=view;name=GaUnit 今よりももっと楽にテストを書けるようなAPIが追加しようという意志が あるようです。