ci-phpunit-test for CodeIgniter 3.x

Latest Stable Version Total Downloads Latest Unstable Version License

Scrutinizer Code Quality Coverage Status Build Status

An easier way to use PHPUnit with CodeIgniter 3.x.

  • You don’t have to modify CodeIgniter core files at all.
  • You can write controller tests easily.
  • Nothing is untestable, maybe.
  • Well documented.

Screenshot: Running tests on NetBeans 8.1


  • PHP 5.4.0 or later
  • CodeIgniter 3.x
  • PHPUnit 4.3 or later (4.7 or later is recommended)
    • If you use NetBeans 8.0.2, please use 4.7. 4.8 is not compatible yet. You can download old version of phpunit.phar from


  • NetBeans
    • Go to Project Properties > Testing > PHPUnit, check Use Custom Test Suite checkbox, and select application/tests/_ci_phpunit_test/TestSuiteProvider.php.

Change Log

See Change Log.

Folder Structure

├── application/
│   └── tests/
│        ├── _ci_phpunit_test/ ... don't touch! files ci-phpunit-test uses
│        ├── Bootstrap.php     ... bootstrap file for PHPUnit
│        ├── TestCase.php      ... TestCase class
│        ├── controllers/      ... put your controller tests
│        ├── libraries/        ... put your library tests
│        ├── mocks/
│        │   └── libraries/    ... mock libraries
│        ├── models/           ... put your model tests
│        └── phpunit.xml       ... config file for PHPUnit
└── vendor/


Download latest ci-phpunit-test:

Unzip and copy application/tests folder into your application folder in CodeIgniter project. That’s it.

Installation via Composer

If you like Composer:

$ cd /path/to/codeigniter/
$ composer require kenjis/ci-phpunit-test --dev

And run install.php:

$ php vendor/kenjis/ci-phpunit-test/install.php
  • Above command always overwrites exisiting files.
  • You must run it at CodeIgniter project root folder.


Download latest ci-phpunit-test:

Unzip and replace application/tests/_ci_phpunit_test folder.

Upgrading via Composer

If you like Composer:

$ cd /path/to/codeigniter/
$ composer update kenjis/ci-phpunit-test
$ php vendor/kenjis/ci-phpunit-test/update.php

How to Run Tests

You have to install PHPUnit before running tests.

Note: You must run phpunit command in application/tests folder.

$ cd /path/to/codeigniter/
$ cd application/tests/
$ phpunit
PHPUnit 4.7.7 by Sebastian Bergmann and contributors.


Time: 341 ms, Memory: 5.50Mb

OK (3 tests, 3 assertions)

Generating code coverage report in Clover XML format ... done

Generating code coverage report in HTML format ... done

To generate coverage report, Xdebug is needed.

If you want to run a single test case file:

$ phpunit models/Category_model_test.php

How to Write Tests

As an example, a test case class for Inventory_model would be as follows:


class Inventory_model_test extends TestCase
    public function setUp()
        $this->obj = $this->CI->Inventory_model;

    public function test_get_category_list()
        $expected = [
            1 => 'Book',
            2 => 'CD',
            3 => 'DVD',
        $list = $this->obj->get_category_list();
        foreach ($list as $category) {
            $this->assertEquals($expected[$category->id], $category->name);

    public function test_get_category_name()
        $actual = $this->obj->get_category_name(1);
        $expected = 'Book';
        $this->assertEquals($expected, $actual);

As an example, a test case class for Welcome controller would be as follows:


class Welcome_test extends TestCase
    public function test_index()
        $output = $this->request('GET', 'welcome/index');
            '<title>Welcome to CodeIgniter</title>', $output

See How to Write Tests for details.

Function/Class Reference

See Function and Class Reference.

Related Projects for CodeIgniter 3.x

Related Repositories



VW PHPUnit extension makes your failing test cases succeed under CI tools scrutiny ...



An easier way to use PHPUnit with CodeIgniter 3.x. ...



CodeIgniter Test Application for ci-phpunit-test ...



CodeIgniter HMVC and ci-phpunit-test ...



PHP boilerplate including PSR-4 autoloading, PHPUnit test config (with separate PSR-2 namespace), and Travis CI. ...

Top Contributors

kenjis complex857 rochefort ytetsuro trungdq88 hoersten RodolfoSilva bellflower2015 souki-tn


package version
php >=5.4.0
nikic/php-parser ^2.1|^3.0


-   v0.12.2 zip tar
-   v0.12.1 zip tar
-   v0.12.0 zip tar
-   v0.11.3 zip tar
-   v0.11.2 zip tar
-   v0.11.1 zip tar
-   v0.11.0 zip tar
-   v0.10.1 zip tar
-   v0.10.0 zip tar
-   v0.9.1 zip tar
-   v0.9.0 zip tar
-   v0.8.2 zip tar
-   v0.8.1 zip tar
-   v0.8.0 zip tar
-   v0.7.0 zip tar
-   v0.6.2 zip tar
-   v0.6.1 zip tar
-   v0.6.0 zip tar
-   v0.5.0 zip tar
-   v0.4.0 zip tar
-   v0.3.0 zip tar
-   v0.2.0 zip tar
-   v0.1.1 zip tar
-   v0.1.0 zip tar