Changes between Version 2 and Version 3 of EC-CUBE標準規約/単体テストガイドライン


Ignore:
Timestamp:
2012/12/07 17:19:26 (11 years ago)
Author:
kim
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • EC-CUBE標準規約/単体テストガイドライン

    v2 v3  
    172172 
    173173== 9. より網羅的にテストを書く方法 == 
    174  1. 定数による条件分岐 
    175  2. exitする箇所のテスト 
     174=== 1. 定数による条件分岐 === 
     175=== 2. exitする箇所のテスト === 
    176176PHPUnitでテストを行う際には実際にphpのプログラムを走らせることになりますが、[[BR]] 
    177177プログラム中にexitする箇所があるとそこでPHPUnit自体も終了してしまうため、有効なテスト結果を得ることができません。[[BR]] 
     
    197197== 10. テストを書きやすくする対策 == 
    198198 
    199  1. functionを「単体」でテストする 
     199=== 1. functionを「単体」でテストする === 
    200200functionの中でさらにfunctionが呼ばれている場合、いちばん外側のfunctionをそのまま実行すると中の分岐が多すぎてテストしきれない場合があります。[[BR]] 
    201201そのような場合は、内側のfunctionの実装をモックに切り替えて欲しい値を自由に返すようにし、外側のfunctionだけをテストするようにします。 
     
    238238この例はそれほど分岐が複雑ではありませんが、内側の関数fuga()の返り値がランダムなのでテストで要求する値を返却させるためにオーバーライドしています。 
    239239 
    240  2. ユーティリティクラスを使ってデータ準備を効率化する 
     240=== 2. ユーティリティクラスを使ってデータ準備を効率化する === 
    241241テストで常に同じ結果を得られるようにするには、テスト実行のたびにDBの内容を期待値に合わせてリセットする必要があります。[[BR]] 
    242242そのため、EC-CUBEのユーティリティであるSC_Queryクラスを使ってsetUp()の中でデータの準備を行い、tearDown()でロールバックを行います。 
     
    273273よく使うデータ定義はtests/class/util以下のユーティリティクラスから取得できるようにしておき、データの再利用性を高めます。 
    274274 
    275  3. ユーティリティクラスを使って端末の種類を設定する 
     275=== 3. ユーティリティクラスを使って端末の種類を設定する === 
    276276端末の種類がPC・モバイル・スマートフォンのいずれになっているかによって条件が分岐する場合は、[[BR]] 
    277277テスト専用のユーティリティを使用して擬似的に端末の種別を設定します。ユーティリティはtests/class/test/util/User_Utils.phpに定義されています。 
     
    294294}}} 
    295295 
    296  4. ユーティリティクラスを使ってログイン状態を設定する 
     296=== 4. ユーティリティクラスを使ってログイン状態を設定する === 
    297297ユーザがログインしているかどうかによって処理が分岐する場合は、セッションの情報とDBの値を書き換えることによりテストで要求する分岐を実現します。[[BR]] 
    298298情報を書き換えるfunctionは、端末種別設定と同じくtests/class/test/util/User_Utils.php内で定義されています。