LoginSignup
3

More than 5 years have passed since last update.

AVAのテスト結果をJUnitのXMLで出力する

Posted at

AVAのテスト実行結果をJenkinsに流す場合のお話です。

結論

下記を実行すれば、result.xmlにXMLが出力される。

$ npm i -g tap-xunit
$ ava -t | tap-xunit > result.xml

以下、詳細です。

JUnitのXML

JUnitの実行結果のXMLフォーマット | Developers.IO

上記記事に詳しく書いているが、Jenkinsにテスト結果を入力するには「JUnitのXML」と呼ばれる形式で出力する必要がある。
そのXMLに公式な仕様は無い(Schemaはこれ?)ようだが、CIツールのデファクトスタンダードになっているようで、mochaならばxunit-file, mocha-jenkins-reporter, mocha-junit-reporterなどを使えばOK。

AVA

avajs/ava: Futuristic JavaScript test runner

AVA(えぃゔぁ)は、JavaScriptのテストフレームワーク。power-assertやBabel、Assertion Planning(参考記事:おまえは今まで実行したassertの回数を覚えているのか?あるいは新しいアサーションユーティリティのご提案 - teppeis blog)にデフォルトで対応していたりと、ナウい。また、テストを並列で実行するので速い。

ava -t | tap-xunit

ava -tまたはava --tapを実行すると、AVAはテスト結果をTAP形式で出力する。mochaのreporterのように、プラグイン形式でテスト結果の出力を外部パッケージに委譲する仕組みを用意しない代わりに、TAP形式で出力したもの各々加工してくれというスタンスっぽい。(今後実装するのかもしれませんが)

tap-xunit

tap-xunitはTAPを入力として「JUnitのXML」を出力するパッケージ。なので、ava -t | tap-xunitとすれば、AVAのテスト結果を「JUnitのXML」として出力できるというわけなのでした。

おわり

Home - Test Anything Protocol

TAPのページを見ると、他の言語のツールが載っている。また、JavaScript(Node.js)だと、tapeのREADMEに色々なreporterが乗っているので、「JUnitのXML」以外にも出力したい形式があれば参考になるはず。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3