/** * a KISS calculator. */class Calculator { /** * This method takes a number and multiplies it by 2. * @param int $number the number * @return int the multiplied number */ function multiplyByTwo($number) { return $number * 2; }}// now we want to write a test for the calculator methods. Every test will test one method of the calculator// While running the test this happens: setup() --> testXXX() --> teardown() ; setup() --> testYYY() --> teardown() ; and so onclass TestCalculator extends TestCase { var $_calculator; /** * This method is run before every test, and can be used to prepare the environment. */ function setup() { $this->_calculator = new Calculator(); } /** * This method is run after every test and can be used to clean the environment. */ function teardown() { // nothing to tear down curretly. An example could be to close a database connection } /** * Tests the multiplyByTwo method. (this is the actual test) */ function testMultiplyByTwo() { $result = $this->_calculator->multiplyByTwo(5); // now we have the result of the method in $result. Ofcouse this should be 10 (expected result), but is it? // to check if it is really 10 we can use one of the assert methods: $this->assertEqual(10, $result); // so the assertEquals simply checks if the value of $result is 10. If this is true the test is ok (and your code works) // and "the test passes". If $result is not 10 there is a bug in your calculator. In this case the test fails }}