Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

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

License

NotificationsYou must be signed in to change notification settings

kenjis/ci-phpunit-test

Repository files navigation

Latest Stable VersionTotal DownloadsLatest Unstable VersionLicense

Scrutinizer Code QualityCoverage StatusBuild Status



An easier way to use PHPUnit withCodeIgniter 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

Requirements

  • PHP 7.3 or later
    • If you use Monkey Patching, you must use PHP-Parser 4.2 or later as a Composer dependency.
  • CodeIgniter 3.x
    • If you want to upgrade to CodeIgniter4, see#361.
  • PHPUnit 9.3 or later
    • If you want to use PHPUnit 9.2 or earlier, please use ci-phpunit-test2.x.

Optional

  • NetBeans
    • Go toProject Properties > Testing > PHPUnit, checkUse Custom Test Suite checkbox, and selectapplication/tests/_ci_phpunit_test/TestSuiteProvider.php.

Change Log

SeeChange Log.

Folder Structure

codeigniter/├── application/│   └── tests/│        ├── _ci_phpunit_test/ ... don't touch! files ci-phpunit-test uses│        ├── Bootstrap.php     ... bootstrap file for PHPUnit│        ├── DbTestCase.php    ... DbTestCase class│        ├── 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/

Installation

Manual Installation

  1. Download latestci-phpunit-test fromhttps://github.com/kenjis/ci-phpunit-test/releases.
  2. Unzip and copyapplication/tests folder into yourapplication folder in CodeIgniter project.

That's it.

Composer Installation

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

And runinstall.php:

$php vendor/kenjis/ci-phpunit-test/install.php --from-composer
  • The above command always overwrites existing files.
  • You must run it at CodeIgniter project root folder.
  • You can specify yourapplication andpublic folder with option arguments, if you use custom folder paths.
$php vendor/kenjis/ci-phpunit-test/install.php -a<application_dir> -p<public_dir> -t<unittest_dir>

So the default would be:

$php vendor/kenjis/ci-phpunit-test/install.php -a application -p public -t application/tests

Upgrading

Manual Upgrading

  1. Download latestci-phpunit-test fromhttps://github.com/kenjis/ci-phpunit-test/releases.
  2. Unzip and replaceapplication/tests/_ci_phpunit_test folder.
  3. ReadChange Log.

Composer Upgrading

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

ReadChange Log.

If you want to remove application/test/_ci_phpunit_test/

If you're upgrading from a previous version ofci-phpunit-test that createdanapplication/test/_ci_phpunit_test directory and now want to directly useci-phpunit-test from Composer, you have a couple of additional steps:

  1. Delete the old test library directory:
    $rm -rf /path/to/codeigniter/application/tests/_ci_phpunit_test
  2. Edit theapplication/tests/Bootstrap.php file. At the bottom of the "set the main path constants"section, add the following:
    define('CI_PHPUNIT_TESTPATH',implode(DIRECTORY_SEPARATOR,    [dirname(APPPATH),'vendor','kenjis','ci-phpunit-test','application','tests','_ci_phpunit_test']).DIRECTORY_SEPARATOR);
    And replace any references to__DIR__ . '/_ci_phpunit_test/ orTESTPATH . '_ci_phpunit_test withCI_PHPUNIT_TESTPATH . '. (So, for example,__DIR__ . '/_ci_phpunit_test/CIPHPUnitTest.php'would becomeCI_PHPUNIT_TESTPATH . '/CIPHPUnitTest.php'.)

How to Run Tests

You need to install PHPUnit before running tests.

If you use Composer:

$composer require phpunit/phpunit --dev

Run All Tests

$cd /path/to/codeigniter/$vendor/bin/phpunit -c application/tests/PHPUnit 9.5.4 by Sebastian Bergmann and contributors....                                                                 3 / 3 (100%)Time: 00:00.102, Memory: 12.00 MBOK (3 tests, 3 assertions)Generating code coverage report in Clover XML format ... done [00:00.002]Generating code coverage report in HTML format ... done [00:00.012]

To generate coverage report, Xdebug is needed.

Run a Single Test

If you want to run a single test case file:

$vendor/bin/phpunit -c application/tests/ application/tests/models/Category_model_test.php

How to Write Tests

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

<?phpclass Inventory_model_testextends TestCase{publicfunctionsetUp():void    {$this->resetInstance();$this->CI->load->model('Inventory_model');$this->obj =$this->CI->Inventory_model;    }publicfunctiontest_get_category_list()    {$expected = [1 =>'Book',2 =>'CD',3 =>'DVD',        ];$list =$this->obj->get_category_list();foreach ($listas$category) {$this->assertEquals($expected[$category->id],$category->name);        }    }publicfunctiontest_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:

<?phpclass Welcome_testextends TestCase{publicfunctiontest_index()    {$output =$this->request('GET','welcome/index');$this->assertStringContainsString('<title>Welcome to CodeIgniter</title>',$output        );    }}

SeeHow to Write Tests for details.

Function/Class Reference

SeeFunction and Class Reference.

Tips

SeeTips.

Stand-alone Packages

Some features ofci-phpunit-test are available in the following standalone packages.

Related Projects for CodeIgniter 3.x


[8]ページ先頭

©2009-2025 Movatter.jp