試験ケース
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/25 07:27 UTC 版)
SUnitでは試験をクラスとして記述する。このクラスを試験ケースと呼ぶ。 次に可変長配列であるOrderedCollectionを試験する試験ケースの例を記述する。 TestCase subclass: #OrderedCollectionTest instanceVariableNames: 'sourceIndex sourceValue expectedValue' classVariableNames: '' poolDictionaries: '' category: 'Example'. OrderedCollectionTest createGetMethod: 'sourceIndex'; createSetMethod: 'sourceIndex'; createGetMethod: 'sourceValue'; createSetMethod: 'sourceValue'; createGetMethod: 'expectedValue'; createSetMethod: 'expectedValue'; yourself.OrderedCollectionTest methodsFor: 'accessing'!targetClass ^ OrderedCollection.!!OrderedCollectionTest methodsFor: 'setUp-tearDown'!setUp "(4)" super setUp. self sourceIndex: 1; sourceValue: 1; expectedValue: 1.!tearDown "(5)" super tearDown.!!OrderedCollectionTest methodsFor: 'test'!runAt0 | target | target := self targetClass new. target add: self sourceValue. "(6)" self assert: self expectedValue = ( target at: self sourceIndex ).!testAt0_0 "(2)" self runAt0.!testAt0_1 "(2)" self sourceValue: 2; expectedValue: 2. self runAt0.!runAt1 | target | target := self targetClass new. target add: self sourceValue. self deny: self expectedValue = ( target at: self sourceIndex ).!testAt1_0 "(2)" self sourceValue: 2. self runAt1.!runAt2 | target | target := self targetClass new. target add: self sourceValue. "(7)" self should: [ target at: self sourceIndex. ] raise: SystemExceptions.IndexOutOfRange.!testAt2_0 "(2)" self sourceIndex: 2. self runAt2.!!| result |"(3)"result := OrderedCollectionTest suite run.result printOn: Transcript. 試験ケースは(1)の様にTestCaseを直接または間接的に継承したクラスで殆どの場合試験対象となるクラスと一対にすることが多い。試験ケースの中にある(2)の様なtestがついたセレクターを持つメソッドは試験メソッドと呼び、開発者は試験メソッドの中に試験方法を記述する。試験方法を試験メソッドとして記述しておけばSUnitにより複数の実行条件、複数の実行単位により実行されるようになる。実行条件は単に試験の合格状況を確認するための失敗しても停止しない通常実行とデバッグ修正を目的とした失敗した時点で停止するデバッグ実行がある。実行単位では、試験メソッド個別、試験ケース単位、TestCaseの派生全てといったものがある。この例では(3)により試験ケース単位で実行している。ただし、実際の試験の実行はGUIで行うため(3)のように明示的なメッセージを書くことは無い。 (4)(5)の#setUpや#tearDownをセレクターを持つメソッドは試験メソッドの前後実行されるメソッドでそれぞれ試験ケースに共通する変数の初期化やファイルの削除などを実行するために使われる。#setUpは試験メソッドの実行前、#tearDownは試験メソッドの実行後に実行される。 (6)(7)の#assert:や#should:raise:は評価メッセージで実行結果を評価し試験の合否を判定する。#assert:は引数がtrueになれば合格とするメッセージで、#should:raise:はshould:の引数として与えたブロックからraise:の引数に指定した例外が発生すれば合格とするメッセージである。なお#assert:には#deny:、#should:raise:には#shouldnt:raise:という評価が逆転したメッセージが存在する。
※この「試験ケース」の解説は、「SUnit」の解説の一部です。
「試験ケース」を含む「SUnit」の記事については、「SUnit」の概要を参照ください。
- 試験ケースのページへのリンク