Spockのテストレポートが想像以上に凄い件について
タイトルはホッテントリメーカーを使いました。http://pha22.net/hotentry/tb/r?word=Spock%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88&phrase=9
全国49万のSpockユーザのみなさま。SpockのMLを見ていると思うので、ご存知かもしれませんがSpockのテストレポートをご存知でない方もいると思うので紹介します。
Spockのテスト結果はだいたいみんなGradleで見ている
Spockは言わずと知れたUnitTestingFramework界最強といわれるテスティングフレームワークですが、これのテストレポートは通常はJUnitのテストレポートXMLであり、多くのSpockユーザはGradleでビルドをしてGradleが生成するテストレポートを見ている事かと思います。
ですが、私は常々困り果てていて、つまりSpockはBDDを強く支援するテスティングフレームワークであるのに、テストレポートには活かされていないということでした。(JUnitのテストレポートXMLがクソだから仕方ない。)
Spock-Reports
そこで私はいつもオリジナルテストランナーを書いて、状態遷移図やテストレポートを生成していたのですが、実は素晴らしいOSSがあったのです。
それはSpock-Reportsです。見たほうが早いでしょう。ということで、実行結果のスクリーンショットは次の通りです。
renatoathaydes/spock-reports · GitHub
サマリー画面
テストクラス毎の詳細画面
使い方
ビルドスクリプトから使うことを前提としてます。
Gradleならこんな感じです。
repositories { jcenter() } dependencies { compile "org.codehaus.groovy:groovy-all:2.3.+:indy" testCompile "org.spockframework:spock-core:0.7-groovy-2.0" testCompile "com.athaydes:spock-reports:1.2" // ←これを追加する感じ }
Spock-ReportsはGroovy2.0以上、Spock0.7以上が必須です。
今回のテストコードはだいたいこんな感じです。(クソなコードだけど、出力用なのでゆるして。)
package org.kyonmm import spock.lang.Specification class WhenAddingProductBacklogItem extends Specification { def "All ProductBacklogItem should be sorted by Priority"() { given: "Product Backlog has 3 PBIs" when: "Product Owner add 1 PBI into Product Backlog" then: "All PBI is sorted by Priority " (PB + PBI).sort().last() == "c" where: PB | PBI ["a", "b", "c"] | "bb" ["a", "b", "c"] | "cc" } def "High Priority ProductBacklogItems should be estimated"() { given: "Product Backlog has 3 PBIs" when: "Product Owner add 1 PBI into Product Backlog" then: "Half of All PBIs is estimated" where: PB | PBI ["a":1, "b":null, "c":null] | ["ab":5] ["a":1, "b":null, "c":null] | ["ab":5] } }
だいたいの説明
各画面を見るとわかると思いますが、言葉としては次のようなイメージです。(つまりこれはBDDを強く意識している)
まとめ
BDDスタイルにSpockを使うことやレビューしやすさをあげるなら、Spock-Reportsを使わないと損です。
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (155件) を見る
Bdd in Action: Behavior-driven Development for the Whole Software Lifecycle
- 作者: John Ferguson Smart
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2014/08/31
- メディア: ペーパーバック
- この商品を含むブログ (1件) を見る
The RSpec Book (Professional Ruby Series)
- 作者: David Chelimsky,Dave Astels,Zach Dennis,角谷 信太郎,豊田 祐司,株式会社クイープ
- 出版社/メーカー: 翔泳社
- 発売日: 2012/02/22
- メディア: 大型本
- 購入: 7人 クリック: 141回
- この商品を含むブログ (18件) を見る