PHPUnit学习01---Linux配置PHPUnit

简介:

文章目的

此文章总结本人在Linux系统上手动配置PHPUnit的过程,现在将此过程总结归纳作为个人的备忘录,同时也希望给那些被迫需要手动配置PHPUnit的同学提供帮助。

PHPUnit官方提供简洁的Pear在线安装,但是由于公司内部网络原因,无法使用,不得不使用手动配置。手动配置虽然麻烦,但是在整个配置过程中,可以了解PHPUnit的目录结构,对于以后深入的学习和使用PHPUnit不无益处。

 

如何配置

配置开始前,首先设置一些符号

  • $PHP_HOME PHP安装目录
  • $PHPUNIT_HOME PHPUnit安装目录

配置过程如下:

1. 下载phpunit源代码,目前最新版本为3.5,但是不太稳定,建议使用稳定的3.4版本,下载地址:http://pear.phpunit.de/

2. 解压PHPUnit到机器任意目录,个人建议解压到$PHP_HOME/lib目录下,这样便于管理所有的第三方php库。假设已经解压后的$PHPUNIT_HOME设为$PHP_HOME/lib/PHPUnit-3.4.10。

3. 修改$PHPUNIT_HOME /phpunit.php文件,如下所示:

#!/usr/bin/env php

<?php

/*

* 此处省去注释~~~~

*/

if (extension_loaded('xdebug')) {

ini_set('xdebug.show_exception_trace', 0);

}

if (strpos('@php_bin@', '@php_bin') === 0) {

set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

}

require_once 'PHPUnit/Util/Filter.php';

PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');

require 'PHPUnit/TextUI/Command.php';

define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');

PHPUnit_TextUI_Command::main();

?>

修改前

#!/usr/bin/env php

<?php

/*

* 此处省去注释~~~~

*/

if (extension_loaded('xdebug')) {

ini_set('xdebug.show_exception_trace', 0);

}

set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

require_once 'PHPUnit/Util/Filter.php';

PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');

require 'PHPUnit/TextUI/Command.php';

define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');

PHPUnit_TextUI_Command::main();

?>

修改后

上面的代码中,被修改的地方由红色高亮显示,修改内容主要是去除了if判断语句,直接执行if内部的语句,具体原因见下节分析。

4. 将$PHPUNIT_HOME/ phpunit.php文件名称修改为$PHPUNIT_HOME/ phpunit。

5. 设置环境变量PATH,将目录$PHPUNIT_HOME/添加到PATH中。比如,可以修改~/.bashrc文件,然后source ~/.bashrc使修改生效,修改后的~/.bashrc文件如下:

clip_image002

配置完成,是不是很简单!

 

验证PHPUnit

配置PHPUnit后,可以在任意目录下输入phpunit命令,如下所示:

clip_image004

出现了上面的提示,说明你的phpunit就配置好了,接下来,可以通过一段示例代码,体验phpunit的功能。StackTest.php如下所示:

<?php

class StackTest extends PHPUnit_Framework_TestCase

{

public function testPushAndPop()

{

$stack = array();

$this->assertEquals(0, count($stack));

array_push($stack, 'foo');

$this->assertEquals('foo', $stack[count($stack)-1]);

$this->assertEquals(1, count($stack));

$this->assertEquals('foo', array_pop($stack));

$this->assertEquals(0, count($stack));

}

}

?>

保存好StackTest.php后,在命令行输入phpunit StackTest.php,就可以运行phpunit,进行单元测试,如下所示:

clip_image006

这样,你的第一个PHPUnit单元测试就执行成功了,该测试用的5个断言全部通过。

 

配置分析

这里需要分析一下配置过程中的第3步——修改phpunit代码。此处将if出去,直接执行if内部的语句“set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());”,此段代码是将$PHPUNIT_HOME目录临时添加到php.ini文件中的“include_path”字段的值中,这样php程序就可以查找到所有phpunit相关的文件。如果不执行第3步的修改,if语句中的条件有可能为false,导致没有设置php.ini的include_path,那么执行phpunit时,php无法找到其他相关文件,就会报告类似“require_once无法找到文件…”的错误。

配置过程的第4,5步是为了使得linux系统可以识别phpunit命令,这样就可以在linux的任意目录下执行phpunit命令。

 

总结

虽然php配置只有几步,但是对于我这个php菜鸟来说还是费了一些功夫的。不过现在清楚了配置过的原理,这些时间还是值得的。

 

参考文献


本文转自bourneli博客园博客,原文链接:http://www.cnblogs.com/bourneli/archive/2012/04/14/2447155.html ,如需转载请自行联系原作者
相关文章
|
2月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
130 2
|
2月前
|
存储 安全 Linux
|
18天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
131 7
|
2月前
|
Linux Shell 数据安全/隐私保护
|
2月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
2月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
83 9
|
2月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
77 5
|
3月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
100 2
|
3月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
3月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
801 3