早速「社長命令・起立」を書いていきます。本の中では、Javaのコマンドラインから実行していましたが、PHPを使うのでWebページで実装します。
インターフェースは単純にコンボボックスで"担当","主任","部長"を選び、"立ちなさい"ボタンを押すと社員が立つようにします。
ソースは次のようになります.
<?php require_once 'shachou.php'; ?> <head> <title>standup step1</title> <body> <form method="post" action="<?= $_SERVER["PHP_SELF"];?>"> 社長: <select name="tantou"> <option>担当 <option>主任 <option>部長 </select> <input type="submit" name="standup" value="立ちなさい"> </form> <p> <?php $shachou = new Shachou(); echo "<PRE>\n"; echo $shachou->main(); echo "</PRE>\n"; ?>
コマンドを実行したときのテストを書きます。PEARのPHPUnitを使いますので、ないかたはPEARコマンドでPHPUnitをインストールしてください。
テストを簡単にするため、社長が立ちなさいと命令する(standupメソッドを呼び出す)と
社員がたった動作を文字列で返すことにします。
テストのソースは次のようになります。
<?php
// UnitTest
require_once 'PHPUnit/GUI/HTML.php';
require_once 'Tests/shachouTest.php';
// run Test Suites
$suite = array();
array_push($suite, new PHPUnit_TestSuite("shachouTest"));
$result = new PHPUnit_GUI_HTML($suite);
$result->show();
?>
<?php
// $Id: 3-step1.html 1 2009-03-19 11:17:04Z atsushifx $
require_once 'PHPUnit.php';
require_once 'shachou.php';
class shachouTest extends PHPUnit_TestCase {
var $shachou;
function shachouTest($name)
{
$this->PHPUnit_TestCase($name);
}
function setup()
{
$this->shachou = new Shachou();
}
function testSetUp()
{
$this->assertEquals("shachou", get_class($this->shachou));
}
function testStandup()
{
$_POST["tantou"] = "担当";
$ret = $this->shachou->standup();
$this->assertEquals("担当が普通に立ちました。\n", $ret);
$_POST["tantou"] = "主任";
$ret = $this->shachou->standup();
$this->assertEquals("主任がすばやく立ちました。\n", $ret);
$_POST["tantou"] = "部長";
$ret = $this->shachou->standup();
$this->assertEquals("部長がだるそうに立ちました。\n", $ret);
}
}
?>
上記のテストを実行すると下のような画面が表示されます。
![[ユニットテスト]](images/step1-01.jpg)
<?php // $Id: 3-step1.html 1 2009-03-19 11:17:04Z atsushifx $ require_once 'tantou.php'; require_once 'shunin.php'; require_once 'buchou.php'; /** * @author Furukawa Atsushi*/ class Shachou { function main() { switch ($_POST["tantou"]) { case "担当": $shain = new Tantou(); break; case "主任": $shain = new Shunin(); break; case "部長": $shain = new Buchou(); break; } return $shain->standup(); } } ?>
<?php
// $Id: 3-step1.html 1 2009-03-19 11:17:04Z atsushifx $
/*
* 社員用共通クラス
*/
class Shain {
function standup()
{
}
}
?>
<?php
require_once 'shain.php';
/*
* 担当
*/
class Tantou extends Shain {
function standup()
{
return "担当が普通に立ちました。\n";
}
}
?>
<?php
require_once 'shain.php';
/*
* 主任
*/
class Shunin extends Shain {
function standup()
{
return "主任がすばやく立ちました。\n";
}
}
?>
<?php
require_once 'shain.php';
/*
* 部長
*/
class Buchou extends Shain {
function standup()
{
return "部長がだるそうに立ちました。\n";
}
}
?>
![[ユニットテスト実行結果]](images/step1-02.jpg)
Copyright © 1997-2003 by A.G.Labo
$Revision: 1 $