program study story

プログラムの勉強 アウトプット

単体テスト 作成手順

単体テストの作成手順を学ぶために書き覚え

testを行うソフトウェアや方法にも異なるが、だいたいの流れをつかむ。

1.TestCaseのサブクラスを作成

フレームワークを使いやすくするために、継承する

2.テストパターンとしてtestXXメソッドを作成する

ユーザが行いたいテストパターンを特定の命名規則で作成していく。

ポイント!

・publicにする(必須)public以外ではメソッドを見つけ出せないため、エラーが発生する。

・test~でメソッド名を始める。JUnitがテストメソッドつぃて検知してくれるので、記述が減る。ある意味デファクトスタンダード

・継承されたTestCaseは、さらにAssertクラスを継承しているのでassertXXX()メソッドがそのまま利用できる。

 

3suite()メソッドを作成

testメソッドをJUnitフレームワークから実行してもらうために、テストセットを指定する。

起動するときには、TestRunnerへテストセットであるTestuSuiteを渡したいときに必要。

public staticにすること。

suite()の作成は以下の3パターンがある。

a.何も書かない

suite()を書かないと、振る舞いとして対象クラスのpublic testXXX()が全て対象になる

b.全部明示する

Sample Testのクラスを引数として渡すと、SampleTestクラスのtestXXX()が全てが対象となる。

c.特定の物を指定する

SampleTestクラスのtestAAA1(),testAAA2()メソッドが対象となる。SampleTestクラスはTestCase(Interfaceの Test)を継承してある

ポイント!

・Testクラスを返却しTestRunnerのrun()に渡すのが目的

・suite()メソッド名はそれほど気にするほどでもないが、TestRunnerクラスへTestSuiteを直接渡さない場合、suite()メソッドがあるか検索する。

・suite()メソッドがあればそこからTestインスタンスを受け取り、suite()が無ければa.のように全メソッドが対象となる。

4.setUp()メソッドを作成

メソッド内に//各テスト開始ごとに共通に行われる処理を記載

5.tearDown()メソッドを作成

メソッド内に//各テスト終了ごとに共通に行われる処理を記載

//setup()で取得したインスタンスを解放

6.起動処理を作成

A.Testクラス自体で起動する場合

※起動のmain(String[ ]argv)を作成

B.そうでない場合

起動時(コマンドプロンプト)に指定する