我应该在暂存/生产环境中使用PHPUnit吗?

vmn*_*npk 2 php phpunit

我已经安装了PHPUnit框架来执行单元测试.我编写了测试用例,并使用现有的PHPUnit库进行测试.

是否有必要在登台和生产环境中配置PHPUnit框架?如果是这样,phpunit测试框架和相关文件在暂存和生产中占用了内存,这是不必要的.

在本地环境中使用PHPUnit测试框架是否足够?

Dar*_*ook 5

如果你将你的单元测试保存在他们自己的顶级子目录中(例如,参见如何在项目中管理单元测试文件?你是否在git中添加它们?)那么你可以tests在git checkout之后删除目录.或者如果使用ftp,则ftp除了那个之外的所有其他目录.或者如果使用rsync,那么--exclude=tests/.

但是,我发现我不同意到目前为止回复的其他人.为了安心,在登台和生产服务器上运行单元测试非常有用.如果测试在您的开发服务器上传递但在暂存或生产时失败,则会出现大红旗.最好让您的单元测试告诉您,您对实时服务器的依赖性是一个不同的版本,而不是让您的客户为您发现它!

但是这需要小心.如果您的任何单元测试不是自包含的,则不得运行它们.显而易见的情况是,如果他们使用数据库,并且单元测试不是通过创建该数据库(具有永远不会与生产数据库冲突的名称)开始,而是通过删除它来完成.另一种情况是直接或间接导致磁盘文件更新的任何测试.特别想想任何记录功能.您应该注意的另一种类型的测试是那些需要很长时间才能完成,或者使用大量CPU或内存的测试.确保在生产服务器处于活动状态并且遇到负载时,这些永远不会运行.

制作副本的一个想法phpunit.xml.dist明确列出那些安全且没有副作用的测试.然后运行它phpunit --configuration production_tests.xml.或者,在测试内部,采用@group以标志或者安全或不安全的测试功能,然后像phpunit --group safe_for_productionphpunit --exclude-group modifies_db