HaxeのUnitTestライブラリ(2018年版)

2018年におけるHaxeのUnitTestライブラリについて書く。この記事を書いている時点ではutestを使っている。

この記事で挙げているものはすべて試したが、多少機能は少ないが枯れていて面倒が少ないのはutest、高機能なものがよければbuddyという感じかなという印象。tink_unittestは使いやすいAPIなんだけど、枯れてないので将来に期待という印象。

utest

Assertion Style(JUnit風)。API設計も素直なので、学習コストが低い。ユーザー数も多く、十分に枯れている。

ただ、テスト内容を日本語で書けない点が欠点と言えば欠点。Haxeは識別子に日本語を使えないので、クラス名・メソッド名ベースでテストレポートを出力するutestでは日本語出力はできない。

buddy

BDD Style。シンタックスが若干変態的だが、テスト内容を日本語で書ける。非同期テストでtimeoutが設定出来たり、コンパイルエラーが発生することがテストできたり、高機能。

Browserテストサポートが若干弱く、レポートがconsole.log()に出力される。

tink_unittest

Assertion Style。Haxeをがっつりやってると必ず目にするTinkerbell系のライブラリ。@:describeでテスト内容を日本語を設定したり、assertionがマクロになっていたり、非同期テストでtimeoutが設定できたり、こちらも高機能。

ただ、どうもv0.5.5の時点では、JS出力でBrowserテストに対応してないっぽい(Browserify通せば行けそうだが)。

MassiveUnit(munit)

数年前はこれがデファクトスタンダードという状況だった。おそらく今でも一番ユーザー数が多いと思われるが、いかんせん設計が古い面が否めない。個人的には、既に役目を終えつつあるものと認識している。

haxe.unit

Haxe標準ライブラリに含まれるUnitTest。機能不足過ぎ、Haxe 4.0で廃止が決まっているため、使う理由はない。

Breaking changes in Haxe 4.0.0 · HaxeFoundation/haxe Wiki · GitHub

補足

日本語の扱いについて記述しているが、実際に試してみたところ、NekoVMでは日本語がコンソールに正しく出力されなかった。Node.jsでは大丈夫だった。