3. テストランナーとは2
u テストツールの機能概要(JUnit4.13より)
u 処理対象の識別 FrameworkMembers、FrameworkMethod
u テスト TestClass
u テストケース TestClassのメソッド(FrameworkMethodで識別出来る)
u テスト実⾏順の整理役 Statement
u テストケースの実⾏役 Runner
u 例
u org.junit.runners.BlockJUnit4ClassRunner
u org.junit.internal.runners.JUnit38ClassRunner
u テストの検証役 Assert
u テストで発⽣したイベントの通知役 RunNotifier
u テストで発⽣したイベントの取得役 RunListener
4. テストランナーとは3
u テストツールの構成図
u 相当抽象化してる為、詳細はJavaDocまたはGitHubご覧ください
u JUnit4.13 を例に挙げていますが、他のツールはこの限りでない場合があります
テスト TestClass
処理対象の識別
FrameworkMembers
テスト実⾏順の整理役
Statement
テストケース TestClassのメ
ソッド
処理対象の識別
FrameworkMembers
テストの検証役 Assert
テストケースの実⾏役 Runner
テストで発⽣したイベントの
通知役 RunNotifier
テストで発⽣したイベントの
取得役 RunListener
6. テストツールのユースケース
u 処理対象を識別する
u 処理対象をテストと事前事後処理に区別する
u 区別した処理対象のうち、テストケースの実⾏順を決定する
u 決定した順番にテストケースを実⾏する
u テストケース毎に想定結果と実⾏結果を検証する
u テストケース毎に検証結果を通知する
u 補⾜の確認事項
u 利⽤する組織の要求を、上記ユースケースで踏襲出来るか確認します
u 想定する範囲とツールを活⽤して⾃動化できる範囲に差異がないか
u ツールの利⽤、カスタマイズ、⾃作の何れになるか、⽬処を⽴てましょう
9. 具体例で⾒るテスト実⾏⽅法1
u JUnit4.13の場合
u org.junit.runner.Runner
u org.junit.runners.ParentRunner
u org.junit.runners.BlockJUnit4ClassRunner
u Chain Of Responsibility パターンを取り⼊れたcustomizable なランナー
u org.junit.internal.runners.JUnit38ClassRunner
u JUnit3系以前のテストケースの記法を踏襲する為のランナー
11. 具体例で⾒るテスト実⾏⽅法3
u Pitalium の場合
u テストをマルチスレッドで実⾏したい
u com.htmlhifive.pitalium.core.ParameterizedThreads
u 独⾃の処理を追加してテストを実⾏したい
u com.htmlhifive.pitalium.junit.PtlBlockJUnit4ClassRunnerWithParameters
u テストに共通する処理をテスト(TestClass)毎に実⾏したい
u org.junit.rules.TestWatcherを継承した
u テストケース(TestClassのメソッド)毎に以下の共通処理を⾏う
u com.htmlhifive.pitalium.core.rules.AssertionView
u テスト成功時:期待結果IDの更新
u テスト終了時:WebDriverのquit
u com.htmlhifive.pitalium.core.rules.ResultCollector
u テストクラス実⾏毎に、テスト結果の収集・出⼒を⾏う