本人が行き当たり場当たりな性格なので、予告なく内容が変わることがあります(特にコード)
動機
材料
- Windows XP
- JDK 1.6.0 update 23
- JRuby 1.6.3 http://www.jruby.org/download
- Fest http://code.google.com/p/fest/
- fest-assert 1.4
- fest-mocks 1.0
- fest-reflect 1.2
- fest-swing 1.2
- Cucumber 1.0.1
- Ant 1.8.2
インストール
JDK/Juby/Ant インストール
適当で。
Cucumber インストール
> jgem install cucumber
Fest インストール
- fest-assert-1.4.jar
- fest-mocks-1.0.jar
- fest-swing-1.2.jar
- fest-util-1.1.2.jar
- fest-util-1.1.2.jar
を適当なディレクトリに置く。
Step01 - 最初の一歩
ディレクトリを掘る
automated-ui-testing-java + src + local + myproject + ticket_viewer + test-feature + step_definitions + support
テストコードを書く
# language: ja フィーチャ: チケット画面を出すところまで シナリオ: No1. プロジェクト一覧を取得する 前提 "メイン画面" が表示されていること もし "URL" に "http://www.r-labs.org/projects.xml" を入力する かつ "ctlFetchProjectList" ボタンをクリックする ならば "プロジェクト一覧" に以下が表示されていること: |r-labs | |Hudson | |IssueExtension| |WikiExtension |
おもむろにテストを実行する
Windowsのコンソールに出すと文字化けするので、仕方なく HTML に出力する
結果は cucumber.html に出力される。
> cucumber test-feature --format html -out cucumber.html
> cucumber.html
当然のごとくテストは動かないので、ここからイロイロやるわけですな。
Step02 - まずは画面を表示する
製品コードを書く
メイン画面とチケット一覧画面を作る。
適当にコントロールとボタンを配置する。
automated-ui-testing-java + src + local + myproject + ticket_viewer + MainFrame.java + TicketListFrame.java
fest を使って画面を表示する
fest FrameFixture を作って画面を表示する。
別にここでテストするわけじゃないので、単に Frame を setVisible すればイイだけではあるが。
テストシナリオの中で起動しても良いんだけども、at_exit フックを使いたかったので
テストシナリオの前に画面を表示する方向で。
support/env.rb に書けば、事前に実行してくれるんじゃないかな?
support/env.rb
#======================================================================================= # Java のライブラリを使えるようにする #======================================================================================= include java #======================================================================================= # festの名前空間を定義 #======================================================================================= # クラスパスを通して Dir["#{File.dirname(__FILE__)}/../../lib/fest\*.jar"].each { |jar| require jar } # 名前空間を定義する module FestFeature include_package 'org.fest.swing.fixture' end #======================================================================================= # 製品の名前空間を定義 #======================================================================================= # こっちも同様に require "#{File.dirname(__FILE__)}/../../dist/AutomatedUITestingJava.jar" module MyPrjTicketViewer include_package 'local.myproject.ticket_viewer' end #======================================================================================= # 画面を作って、表示する #======================================================================================= # Fixture の詳細は http://easytesting.org/swing/apidocs/index.html 辺を参照のこと mainFrame = FestFeature::FrameFixture.new MyPrjTicketViewer::MainFrame.new mainFrame.show #======================================================================================= # Cucumber のテストが終わった後にやること #======================================================================================= at_exit do # fest が使った資源をきれいさっぱり掃除する mainFrame.cleanUp end