Writing a Unit Test

Unit testing is a useful tool when we want to start to test our individual business logic classes. The tests/unit directory will be used to hold the unit test cases and tests/functional directory to hold the function test cases.

Write a unit test case

We will start be writing a very simple unit test case.

<?php class ProjectTestCase extends UnitTestCase { function testProjectClassExists() { $project = new Project(); $this->pass(); } } ?>

Save the code as ProjectTestCase.php in the document_root/time-tracker/tests/unit/ directory.

Run your first unit test case from your browser

Point your browser to your development server's unit test case runner, e.g. http://web-server-address/time-tracker/tests/unit.php. You should see the following

Figure 1: Unit test runner

Clicking on the ProjectTestCase.php like, you should see

Figure 2: Unit test failure

Smallest step to make the test pass.

Obviously, we need create the class Project, so lets define the class.

<?php class Project { } ?>

Save the above code as time-tracker/protected/pages/APP_CODE/Project.php. Where the APP_CODE directory will contain most of your business logic code for the Time Tracker application.

We also need to add the following line in our test case so as to include the Project class file when running the tests.

The statement Prado::using('Application.APP_CODE.Project') basically loads the Project.php class file. It assumes that a class name Project has filename Project.php. For futher details regarding Prado::using can be found in Prado Namespaces documentation.

<?php Prado::using('Application.APP_CODE.Project'); class ProjectTestCase extends UnitTestCase { ... } ?>

Run the unit test runner again, we see that the test has passed.

Figure 3: Unit test success

Later on, we shall write more test cases. See the SimpleTest documentation for detailed tutorial on writing test cases.