`

How to use PHPUnit (CIUnit) with CodeIgniter 2.1.0

    博客分类:
  • php
 
阅读更多

转载自: http://d.hatena.ne.jp/Kenji_s/20120117/1326763908

 

How to use PHPUnit (CIUnit) with CodeIgniter 2.1.0Add Star

STOP SOPA

This article explains how to install and use PHPUnit/CIUnit with CodeIgniter 2.1.0.

What is CIUnit?

CIUnit is a bridge between your CodeIgniter application and PHPUnit.

But the official release supports CodeIgniter 1.7.2. So I use the fork of CIUnit (my-ciunit).

Install PHPUnit

$ sudo pear channel-discover pear.phpunit.de
$ sudo pear channel-discover components.ez.no
$ sudo pear channel-discover pear.symfony-project.com
$ sudo pear install phpunit/PHPUnit

Install CodeIgniter

$ wget http://downloads.codeigniter.com/reactor/CodeIgniter_2.1.0.zip
$ unzip CodeIgniter_2.1.0.zip

Install CIUnit

Download my-ciunit

The default branch of my-ciunit is now for CodeIgniter 2.1.0.

$ wget https://bitbucket.org/kenjis/my-ciunit/get/default.zip
$ unzip default.zip

If you use CodeIgniter 2.0.3, get "CI 2.0.3" branch.

$ wget https://bitbucket.org/kenjis/my-ciunit/get/CI%202.0.3.zip
$ unzip "CI 2.0.3.zip"
Install my-ciunit by shell script

my-ciunit has a installer shell script.

How to use:

$ tools/install.sh /path/to/CodeIgniter/ [database_name [database_user [database_password [database_host]]]]

Note: The database name for testing must end with "_test".

For example:

$ cd kenjis-my-ciunit-*
$ tools/install.sh ../CodeIgniter_2.1.0/ ciunit_test root password

This script creates database config file for testing, "application/config/testing/database.php".

Install my-ciunit manually

Copy application folder and tests folder in my-ciunit to CodeIgniter top diretory.

$ cd kenjis-my-ciunit-*
$ cp -R application /path/to/CodeIgniter_2.1.0/
$ cp -R tests /path/to/CodeIgniter_2.1.0/

And create database config file for testing, "application/config/testing/database.php".

Note: The database name for testing must end with "_test".

If you use MY_Loader, MY_Output, MY_Session

Change the parent classes to MY_* in:

  • application/third_party/CIUnit/core/CIU_*.php
  • application/third_party/CIUnit/libraries/CIU_*.php

Directory structure of CIUnit

CodeIgniter/
  application/
    third_party/
      CIUnit/ ... CIUnit itself
  tests/
    controllers/ ... tests of controller
    fixtures/    ... fixtures
    helpers/     ... tests of helper
    libs/        ... tests of library
    models/      ... tests of model
    system/      ... tests of system (PHP)

Prepare Database for Testing

The database name for testing must end with "_test". This is the specification of CIUnit.

Create "ciunit_test" database, and create "phone_carrier" table for a sample model test code in CIUnit.

CREATE TABLE IF NOT EXISTS `phone_carrier` (
  `name` varchar(255) NOT NULL,
  `txt_address` varchar(255) NOT NULL,
  `txt_message_length` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Prepare Model for sample test code

CIUnit has a sample test code for "Phone_carrier_model" model, but has no "Phone_carrier_model" model code.

Create the model.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Phone_carrier_model extends CI_Model {
	
	function __construct()
	{
		parent::__construct();
		$this->load->database();
	}
	
	function getCarriers(array $attributes)
	{
		foreach ($attributes as $field)
		{
			$this->db->select($field)->from('phone_carrier');
			$query = $this->db->get();
			foreach ($query->result_array() as $row)
			{
				$data[] = array($field, $row[$field]);
			}
		}
		
		return $data;
	}
	
}

/* End of file phone_carrier_model.php */
/* Location: ./application/models/phone_carrier_model.php */

Run tests

Before run phpunit, move to tests folder.

$ cd tests/

To run all tests,

$ phpunit

To run tests of model, specify a folder,

$ phpunit models

To run a specific test file,

$ phpunit models/PhoneCarrierModelTest.php

If all tests have passed, you'll see green OK below:

f:id:Kenji_s:20120117095833p:image


Next: Database Testing of CodeIgniter Application with PHPUnit (CIUnit) - A Day in Serenity @ Kenji

分享到:
评论

相关推荐

    imadoki-codeigniter-phpunit:Imadoki的CodeIgniter入门PHPUnit

    本项目“imadoki-codeigniter-phpunit”是Imadoki为初学者准备的一个教程,旨在帮助他们掌握如何在CodeIgniter框架中集成和使用PHPUnit进行测试驱动开发(TDD)。 在CodeIgniter中集成PHPUnit,首先需要确保你已经...

    ci-phpunit-test, 一种简单的使用 PHPUnit 3.x 语言的方法.zip

    ci-phpunit-test, 一种简单的使用 PHPUnit 3.x 语言的方法 ci-phpunit-test用于 CodeIgniter 3 。x 在 CodeIgniter 3. x. 中使用PHPUnit的简便方法你根本不需要修改CodeIgniter核心文件。你可以轻松编

    ci-phpunit-test:将PHPUnit与CodeIgniter 3.x结合使用的更简单方法

    适用于CodeIgniter 3.x的ci-phpunit-test 将PHPUnit与 3.x结合使用的更简单方法。 您根本不需要修改CodeIgniter核心文件。 您可以轻松编写控制器测试。 也许没有什么是不可测试的。 有据可查。要求PHP 7.3或更高版本...

    PHPUnit

    use PHPUnit\Framework\TestCase; class CalculatorTest extends TestCase { public function testAdd() { $calculator = new Calculator(); $result = $calculator-&gt;add(2, 3); $this-&gt;assertEquals(5, $...

    PHPunit和CI框架整合

    通过以上步骤,我们可以将PHPunit的强大测试能力与CodeIgniter的灵活性相结合,确保项目在开发过程中保持高质量和稳定性。同时,持续集成的实施进一步提高了团队协作效率,减少了部署风险。在实际开发中,不断优化和...

    PHPUnit单元测试的配置及使用

    use PHPUnit\Framework\TestCase; class MyClassTest extends TestCase { public function testAddFunction() { $myClass = new MyClass(); $result = $myClass-&gt;add(2, 3); $this-&gt;assertEquals(5, $result);...

    phpunit附属lib

    如果你在用PHPUNIT会报 include(PHPUnit_Extensions_Story_TestCase.php): failed to open stream: No such file or directory include(PHPUnit_Extensions_Database_TestCase.php): failed to open stream: No such...

    shopex之phpunit测试环境

    use PHPUnit\Framework\TestCase; require_once 'path/to/Product.php'; class ProductTest extends TestCase { public function testGetName() { $product = new Product(); $product-&gt;setName('Sample ...

    composer 安装PHPUnit

    6. **`bin`目录**:`bin`目录通常包含Composer安装的可执行文件,比如`phpunit`,这是 PHPUnit的命令行脚本,可以直接运行测试。 7. **`vendor`目录**:这个目录存储所有通过Composer安装的库,包括PHPUnit和其他...

    Etsy的PHPUnit扩展phpunit-extensions.zip

    phpunit-extensions 是 Etsy 的 PHPUnit 扩展。 标签:phpunit

    phpunit 4.2 最新版

    phpunit 3 67 最新版 PHPUnit是一个轻量级的PHP测试框架 它是在PHP5下面对JUnit3系列版本的完整移植 是xUnit测试框架家族的一员 它们都基于模式先锋Kent Beck的设计 单元测试是几个现代敏捷开发方法的基础 使得...

    phpunit windows

    **PHPUnit在Windows环境下的应用与挑战** PHPUnit是一款广泛使用的PHP单元测试框架,它使得开发者能够在PHP项目中进行严谨的测试驱动开发(TDD)或行为驱动开发(BDD)。尽管 PHPUnit 主要针对的是跨平台的开发环境...

    phpunit-book.pdf

    PHPUnit手册详细介绍了如何安装PHPUnit、编写测试、执行测试、使用测试替身、组织测试套件、分析代码覆盖率,以及扩展PHPUnit框架等各个方面。 首先,手册介绍了PHPUnit的安装,包括系统需求、通过PHP档案包(PHAR)...

    phpunit配置及使用

    本指南将详细介绍如何配置和使用 `phpunit`。 首先,为了安装 `phpunit`,我们需要先安装 PEAR (PHP Extension and Application Repository),它是 PHP 的一个包管理器。将 `go-pear.phar` 文件放到 PHP 的安装目录...

    pear及phpUnit的安装教程

    3. 接着,使用`pear install phpunit/PHPUnit`命令来安装phpUnit。 4. 安装完成后,你可以通过`phpunit --version`检查phpUnit是否安装成功。 描述中提到这个教程是经过测试的,这意味着每个步骤都应该能正常工作。...

    phpunit4.8.35

    在给定的压缩包文件"phpunit4.8.35"中,包含的是PHPUnit的一个特定版本,即4.8.35。这个版本发布于PHP测试领域的一个重要时期,因为它在PHP 5.x时代非常流行,同时也支持向PHP 7的过渡。 `phpunit.phar`文件是PHP的...

    PHPunit手册中文版

    本版次适用于3.2版的PHPUnit。当然,大多数示例应该也可用于2.0-3.1版的PHPUnit。本书后面的“用于PHP 4的PHPUnit”(附录B - 译注)部分涉及了适用于PHP 4的旧版PHPUnit,它们已不再积极开发。 读者需要很好的理解...

    phpunit-TDD驱动开发

    use PHPUnit\Framework\TestCase; class ConverterTest extends TestCase { public function testHello() { $this-&gt;assertEquals('Hello', 'Hell' . 'o'); } } ``` 6. **配置PHPUnit**: 配置PHPUnit的...

Global site tag (gtag.js) - Google Analytics