『車窓からのTDD』を写経してみた #5 北陸トンネル

(写経)5.北陸トンネルね!いっちょらい! 〜Exception テスト〜

(P.8)
(P.9)

次は例外のテスト。何もpushしてない時にpopをした場合、EmptyStackExceptionがthrowされる事を確認する。

pop()をガラだけ実装。

テスト実行。期待した例外は返って来ていない。

テストを通る最小のコードを書く。テストが通ることを確認。

別途、1回pushしていればpopしても例外を投げない事を確認。新しくテスト(testPushAndPop()メソッド)を追加。この時点ではまだ失敗と出る。

pop()メソッドの実装を修正。

テスト実行…あれ?コケた。

現状仕様とこの後の章の内容を見ると、ソースコード的にはpop実装は後程行っている模様。となると、ここでのpop()メソッドは

  • 要素が空だったら例外を投げる

ポイントのみとなるので、popしてもsizeは変わらない=1である、と把握。assert文を書き換えてテストを通すことにする。

次いで、空の状態でtop()メソッドを実行したときに例外を返すテストを書いてみる。この状態ではテストが失敗する。

(P.10)

pop()メソッドと同じ対応をtop()メソッドにも施してみる。そしてテストが通る事を確認。

ここで、空判定を行う処理記述が重複しているので、メソッド抽出を行う。重複箇所を範囲選択し、[Alt]+[Shift]+[M]でメソッド抽出ダイアログが表示される。メソッド名を入力し、[OK]を押下。

メソッド抽出内容の確認及び置き換えを行い、再度テストが全て通る事を確認。