ラベル Spock の投稿を表示しています。 すべての投稿を表示
ラベル Spock の投稿を表示しています。 すべての投稿を表示

2014年2月14日金曜日

SpockでPandocをCharacterization Testする

SpockでPandocのCharacterization Testを行う手順は、以下の通り。なお、Characterization Testとは、テストが用意されていないソースコードに対して、現状の挙動をそのまま記録するテストのこと(もちろん、Pandocは例として使用しているだけで、Pandoc自体がテストされていないという意味ではない)。詳細は、『Working Effectively with Legacy Code Chapter 13』を参照。

 

前提

 

手順

まずは、Markdownで書かれた、以下のファイル(header.md)を用意する。
#Header Test
次に、Spockのテストを用意する。


このテストでは、PandocでMarkdownファイルをHTMLファイルに変換し、そのHTMLファイルの内容をテストしている。期待値が空文字になっているため、当然このテストは失敗する。
Condition not satisfied:

"" == result
   |  |
   |  <h1 id="header-test">Header Test</h1>
   false
   39 differences (0% similarity)
   (--------------------------------------~-~)
   (<h1 id="header-test">Header Test</h1>\r\n)

    at HeaderSpec.header characterization test(HeaderSpec.groovy:10)
実際の変換結果はheader.htmlに出力されているので、その内容をテストコードに反映する。


再度テストを実行すると、成功するはずのテストが、まだ失敗する。
Condition not satisfied:

"""<h1 id="header-test">Header Test</h1> //""" == result
                                               |  |
                                               |  <h1 id="header-test">Header Test</h1>
                                               false
                                               3 differences (92% similarity)
                                               <h1 id="header-test">Header Test</h1>(-~)\n(//)
                                               <h1 id="header-test">Header Test</h1>(\r)\n(--)

    at HeaderSpec.header characterization test(HeaderSpec.groovy:10)
どうも、期待値と検証値で改行コードが異なるのが原因らしい。期待値と検証値それぞれでnormalizeメソッドを実行して、改行コードの違いを吸収する。


上記の修正後、再度テストを実行すると、無事テストが成功する。

2014年2月4日火曜日

EclipseでSpockを試す

前提

  • Spock 0.7
  • Groovy 2.0.7
  • 動作確認環境
    • Eclipse 4.3 SR1
    • Eclipse Plugin
      • Groovy Eclipse
      • Gradle IDE
動作確認環境の構築手順については、『Gradleを使ってEclipse 4.3+Groovy Eclipse+Gradle IDEをインストール』を参照

手順

Eclipseで新規プロジェクト(一般プロジェクト)を作成し、プロジェクト直下に、以下のbuild.gradleを配置する。


コマンドラインでプロジェクトのディレクトリに移動し、以下のタスクを実行する。
gradle mkdirs
gradle cleanEclipse
gradle eclipse
プロジェクトを右クリックし、「Refresh」を選択すると、プロジェクトがGroovyプロジェクトとして認識される。再度プロジェクトを右クリックし、「Configure」-「Convert to Gradle Project」を選択すると、Gladleプロジェクトに変換される。

この時点で、以下の設定も確認しておく。

  • 「Windows」-「Preferences」-「Groovy」
    • Use monospace font for JUnit (deprecated)にチェック
    • これにより、JUnit実行時に monospace fontが使用される
  • 「Windows」-「Preferences」-「Gradle」
    • Disable underlininig for .gradle files
    • これにより、.gradleファイルを開いた際に、余計な下線が表示されるのを抑止

以下のSpockのテストケース(SampleSpec.groovy)を、「src/test/groovy」に作成する。


配置したSampleSpec.groovyを右クリックし、 「Run as」-「JUnit Test」を選択するとテストが実行される、テストが失敗する(このテストは意図的に失敗するよう書かれている)。

以下のように修正し、再度テストを実行すると、テストが成功することを確認できる。