TDDはじめまして、セプテーニ・テクノロジー(ベトナム・ハノイ)駐在の鎌田です。昨今、社内グループにおける新規サービス開発の現場においても、RailsのRspec、ScalaのScalaTest・Specs2等々、自然言語に近いテスト表記を用いた近代的なテスト駆動開発が主流になってきてます。言え、数年前から運営中のサービス(=テストコードが無かったりする、いわゆるレガシーコード)だと、当然、既存のフレームワークの中で選択可能なテストツールの種類も限られてきます。PHPUnitな記事を書こうとおもいます。2.xが入ってる前提です。1.PHPUnitのインストールPearからインストールする方法が一般的ですが、Pearから最新のPHPUnit(バージョン4.x)をダウンロードすると、CakePHPからPHPUnitを認識するために必要なファイルが解凍されない問題にハマったため、今回は別の方法でいきます。Composerというものを初めて使ってみました。PHPUnitをインストールしたいフォルダへ移動プロジェクトフォルダの内部にインストールします。Composerを使うと、プロジェクトごとに異なるバージョンのPHPUnitが容易に使い分けられて便利です。RailsのGemみたいですね。composer.json(設定ファイル)というファイル名で以下記載これもrailsで言うところのGemfileです。暗黙にcomposer.jsonを読み込んで、要求されたライブラリを解凍しているようです。この後、app/Vendor/以下に"PHPUnit"というフォルダが作成されているはずです。アクセスして、CakePHPのユニットテストのページが表示されたらインストール完了。2.基本的なテストケース四則計算してくれるコンポーネント"CalculateComponent.php"に対して、テストケースを書きたいとします。}テストクラス名(ファイル名)は、「(テスト対象となるクラス名)+Test.php」となります。}という風に@アノテーションをつけると、テストメソッドと見なされます。setUp()、tearDown()は各テストメソッドの始めと終わりに一度ずつ呼ばれるメソッドです。その他、各テストクラスに対してそれぞれ一度ずつ呼ばれるsetupBeforeClass()、tearDownAfterClass()もあります。3.モックPHPUnitに限らずテストコード開発においては、よくモック(スタブ)を用いることでテスト時のみの特別な挙動を操作したい場合があります。ここに、実行時間帯によって実行結果が変わってくるsay()を含んだGreetingComponentクラスがあったとします。...(同じメソッドsay()に対して時間帯条件ごとに複数のテストケース)}$this->getMock()で、元のクラスを部分的にオーバライドしたモッククラス作成します。引数にターゲットとなるクラス名も文字列で、第二引数にオーバライドするメソッド名を配列で渡します。expects()は当メソッドが何回実行されるかを期待します。any()は特に実行回数に制限が無い場合に指定します。any()の他にonce()など。method()にはオーバライドしたいメソッド名を渡します。will($this->returnValue($value))に返したい値"7"や"13"をセットします。テスト実行時にこのメソッド(上記例では"getCurrentHour")を実行した時に、実行時間帯に関わらずwill($this->returnValue($value))で指定した値が返ってきます。同様にモックで"1"、"19"、"22"を返すようなテストケースも追加すると、「GoodEvening.」や「GoodNight.」など、全てのケースがテストできます。FixtureとかJenkinsとの連携とかも書きたかったのですが、長くなりそうなので、また機会があれば書きたいと思います。ありがとうございました。実装...お疲れさまです。中途2年目の堀越です。使いこなし...2017-06-06ScalaでDeeplearning4jを使い自動運転で峠を攻める!こんにちは。次はGoogleスライドで作ろう...。Dockerの構築ども、セプテーニ・オリジナルのさえきと申します。この記事は...セプテーニ・オリジナルでは一緒に働く仲間を募集中です!ぜひ一度採用サイトを御覧ください。»セプテーニ・オリジナルはScalaMatsuri2020の将軍スポンサーです。ScriptPYXISインフラチームの軌跡プログラミング初心者が3ヶ月半の研修を終えて新卒研修を終えての振り返り月別アーカイブ検索はてなブログをはじめよう!septeni-originalさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。