vvvv Test Framework

Pocket

この記事はvvvv Advent Calendar4日目の記事です。


おそらく多くのPatcherが(自分も含め><;)今まで見向きもしなかったであろう(憶測)vvvvでのテストについてです。
プログラマーたるものテストをおろそかにしてはいけませんね!(自戒)
vvvvにもパッチをテストするためのフレームワークがあります。JavaでいうJUnitの様なものだと思います。
Test Framework

このページにはまず初めに”\lib\nodes\Template test.v4p”を使ってテストパッチを作るべしと書いてますが、
自分のvvvvインストールフォルダには見当たりませんでした。
どうやらα版のzipにしか入ってないっぽいです。
そもそもα版をビルドするときに使っているというようなことを書いているのでβ版には入ってないのかもです。

でも無くても大丈夫です。上記ページに画面キャプチャが張られていますが、それがTemplate test.v4pの中身です。
簡単なテンプレートなので自分で作ることができます。

要は出力ピンにSuccess、Message、Runningを持っているサブパッチはテストパッチとして使用できる、という事らしいです。

という事で実際にやってみます。

例えば↓のような自作のサブパッチがあったとします。
「aaa」という文字だけを削除する処理をするサブパッチ(patch1と命名)です。

このサブパッチが期待通りに動作するかをテストするパッチを作ってみます。
テストパッチの名前はここではpatch1 test.v4pとします。
詳細は後述しますが、テストパッチの名前は「*test.v4p」にする必要があります。

公式ページの画面キャプチャを参考にしてこんな感じになりました。
AreEqualノードを使って、patch1が処理した文字列が期待通りになっているかをチェックします。
AreEqualノードのActualにpatch1が処理した文字列、Expectedに期待結果を入力します。
つまりこれがテストケースです。

テストを実行するにはTestRunnerノードを使用します。
いくつか種類がありますが、ここではTestRunner (TestDirectories)を使います。
これは指定したフォルダに含まれているテストパッチを一括で実行してくれるノードです。
この時にテストパッチかどうかの判定でファイル名を「*test.v4p」で検索しているので、
テストパッチの名前に注意する必要があるわけですね。

では、テストを実行するためにTestRunnerを含んだパッチを作成します。
このパッチの名前は何でもいいですが、ここではTestRoot.v4pという名前にします。
テストパッチと同じフォルダに置く場合は名前に注意です。
うっかり*test.v4pに該当する名前にしてしまうと、
このパッチ自体がテストパッチとして読み込まれてしまい、TestRunnerの挙動が怪しくなります。

こんな感じのパッチを作ってTestRunnerノードの「Run TestSuits」をクリックしてみます。
テストが実行されます。

おっと何やらテストに失敗してますね。

大文字AAA削除しない期待結果だったのに削除されてしまっているようです。
patch1の処理をよく見るとRegExprノードの「Case Sensitive Match」がオフになってます。
よくありがちなミスじゃないでしょうか。
ということで「Case Sensitive Match」をオンにします。

もう一度テストを実行してみます。

テストクリア!

というような感じでvvvvのパッチをテストしてみました。
自分の作ったパッチの動きが不安なときとか、修正後のデグレテストとか、色々便利なんじゃないでしょうか。
もっとじっくりやればTDDもできる?

おわり。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*