Feb 1

逆引きrhaco(?)15: ユニットテストを作りたい

その前にdoctestの解説をしろという話がありますが、今ちょうどやってるので、書いておきます。

ユニットテストをする場合は
1.まずユニットテスト用のフォルダを作ります。rhaco本体にならって_testappとします。
2.rhaco本体の_testapp下のindex.phpとsetup.php、__init__.phpをテスト用フォルダにコピーします。
3.rhaco本体にならって_testapp/setup/testsフォルダを作成します。
4.rhaco本体の_testapp/setup/testsフォルダから作成したtestsフォルダにunittest.phpをコピーします。

※2008/11/29現在_testappがrhaco本体に無いので上のステップは以下のように変わります。

1.変更なし(PDTの場合プロジェクトを生成します)
2.rhaco本体のsetup.phpをテスト用フォルダ(プロジェクト)にコピーします。
3.変更なし
4.unittest.phpはありませんので、コピーしません。


以上で最小構成が出来ました。たぶんこんな感じです。
_testapp
  index.php
  setup.php
  __init__.php
  setup
    tests
      unittest.php  

※2008/11/29現在
_testapp
  setup.php
  setup
    tests


この構成のsetup.phpにアクセスするとrhacoのセットアップ画面が表示されます。
適当に設定して(ログをdeep_debugにすると吉)設定ボタンを押せば設定は完了です。

testと書いてあるリンクを押して下さい。

何も表示されませんが、とりあえずこれで動きました。
次にテストを書いてみます。セットアップの後はこんな感じになってるはずです。

_testapp
  index.php
  setup.php
  __init__.php
  setup
    tests
      unittest.php
  library
  resources
  work (logやキャッシュ設定をしてれば)

※2008/11/29現在
_testapp
  index.php
  setup.php
  __init__.php
  setup
    tests
  library
  resources
  work (logやキャッシュ設定をしてれば)


rhacoのテストはdoctestがベースなため、テストの呼び出し元を作る必要があります。ここではlibraryの下にA.phpを作ってみます。

A.php(ファイル名とクラス名は一致させる必要があります)
<?php
  class A {
    function test(){
    }
    function testMethod(){
      /*** unit('sampleTest'); */
    }
  }
?>


テスト用ファイルをtests下に作ります。

sampleTest.php
<?php
  Rhaco::import("util.UnitTest");
  class sampleTest extends UnitTest {
    successTest(){
      $this->assertEqual(1,1);
    }
    failTest(){
      $this->assertEqual(1,0);
    }
  }
?>


これでもう一度動かすと、success 1, failure 1という結果が出て、テストが動いたことが確認できます。次は_testapp外のファイルをテストしたい場合について書きます。

| comment(0)