Changes between Version 2 and Version 3 of EC-CUBE標準規約/単体テストガイドライン
- Timestamp:
- 2012/12/07 17:19:26 (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
EC-CUBE標準規約/単体テストガイドライン
v2 v3 172 172 173 173 == 9. より網羅的にテストを書く方法 == 174 1. 定数による条件分岐 175 2. exitする箇所のテスト 174 === 1. 定数による条件分岐 === 175 === 2. exitする箇所のテスト === 176 176 PHPUnitでテストを行う際には実際にphpのプログラムを走らせることになりますが、[[BR]] 177 177 プログラム中にexitする箇所があるとそこでPHPUnit自体も終了してしまうため、有効なテスト結果を得ることができません。[[BR]] … … 197 197 == 10. テストを書きやすくする対策 == 198 198 199 1. functionを「単体」でテストする 199 === 1. functionを「単体」でテストする === 200 200 functionの中でさらにfunctionが呼ばれている場合、いちばん外側のfunctionをそのまま実行すると中の分岐が多すぎてテストしきれない場合があります。[[BR]] 201 201 そのような場合は、内側のfunctionの実装をモックに切り替えて欲しい値を自由に返すようにし、外側のfunctionだけをテストするようにします。 … … 238 238 この例はそれほど分岐が複雑ではありませんが、内側の関数fuga()の返り値がランダムなのでテストで要求する値を返却させるためにオーバーライドしています。 239 239 240 2. ユーティリティクラスを使ってデータ準備を効率化する 240 === 2. ユーティリティクラスを使ってデータ準備を効率化する === 241 241 テストで常に同じ結果を得られるようにするには、テスト実行のたびにDBの内容を期待値に合わせてリセットする必要があります。[[BR]] 242 242 そのため、EC-CUBEのユーティリティであるSC_Queryクラスを使ってsetUp()の中でデータの準備を行い、tearDown()でロールバックを行います。 … … 273 273 よく使うデータ定義はtests/class/util以下のユーティリティクラスから取得できるようにしておき、データの再利用性を高めます。 274 274 275 3. ユーティリティクラスを使って端末の種類を設定する 275 === 3. ユーティリティクラスを使って端末の種類を設定する === 276 276 端末の種類がPC・モバイル・スマートフォンのいずれになっているかによって条件が分岐する場合は、[[BR]] 277 277 テスト専用のユーティリティを使用して擬似的に端末の種別を設定します。ユーティリティはtests/class/test/util/User_Utils.phpに定義されています。 … … 294 294 }}} 295 295 296 4. ユーティリティクラスを使ってログイン状態を設定する 296 === 4. ユーティリティクラスを使ってログイン状態を設定する === 297 297 ユーザがログインしているかどうかによって処理が分岐する場合は、セッションの情報とDBの値を書き換えることによりテストで要求する分岐を実現します。[[BR]] 298 298 情報を書き換えるfunctionは、端末種別設定と同じくtests/class/test/util/User_Utils.php内で定義されています。