PhpStorm 配置 PHPUnit

配置说明

全局安装phpunit代码

composer global require phpunit/phpunit

该代码会自动保存在 /User/你的用户名/.composer/vendor/phpunit

全局安装phpunit命令脚本

从上一步安装结果可以得知当前环境PHP版本可兼容的phpunit的版本,我这里的PHP是5.6的,最大可兼容phpunit5.7

wget https://phar.phpunit.de/phpunit-5.7.phar
chmod +x phpunit-5.7.phar
sudo mv phpunit-5.7.phar /usr/local/bin/phpunit
phpunit --version

创建 phpunit.xml

放在你的项目根目录,这个文件是 phpunit 会默认读取的一个配置文件

<phpunit bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="service">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

配置 PhpStorm 的 PHP CLi

Languages & Frameworks > PHP

点击 + 新增一个 PHP 解释器

  • 配置 php 执行程序
  • 点击那个 同步的小图标,如果看到 successfully 就说明配置有效

分享图片

?

配置 phpunit.phar 路径和 phpunit.xml 路径

Languages & Frameworks > PHP > Test Frameworks
点击 + 新增一个 PHPUnit Local

例如我的phpunit本地的路径为/usr/local/bin/phpunit

分享图片

?

配置单元测试类提示

Languages & Frameworks > PHP

如我的phpunit包本地的路径为/Users/maritni/.composer/vendor/phpunit

分享图片

?

单元测试编写

  1. Class为Demo的测试类为DemoTest
  2. 测试类继承于 PHPUnit\Framework\TestCase
  3. 测试方法
    • 必须为public权限,
    • 一般以test开头,也可以给其加注释@test来标识
    • 在测试方法内,类似于 assertEquals() 这样的断言方法用来对实际值与预期值的匹配做出断言。
<?php
/**
 * Description:数组压入和弹出测试用例
 * Created by Martini
 * DateTime: 2019-06-29 16:09
 */

use PHPUnit\Framework\TestCase;

class DemoTest extends TestCase
{
    public function testPushAndPop()
    {
        $stack = [];
        $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));
    }
}

执行单元测试

执行单个文件单元测试

方式1: Phpstorm方式,当前测试类右键Run即可

分享图片

?

方式2:命令行方式,进入项目目录执行

phpunit Creational/SimpleFactory/Tests/DemoTest.php

分享图片

?

执行全局单元测试

全局单元测试,实际上phpunit会根据xml配置文件进行测试。

phpstorm方式

分享图片

?

命令行方式

命令行下进入当前项目执行

phpunit

XML 文件用法

PHPUnit 的目标之一是测试应当可组合:我们希望能将任意数量的测试以任意组合方式运行,例如,整个项目的所有测试,或者项目中的某个组件内的所有类的测试,又或者仅仅某单个类的测试。

PHPUnit 支持好几种不同的方式来组织测试以及将它们编排组合成测试套件。

PHPUnit的 XML 配置文件可以用于编排测试套件。Example1,“用 XML 配置来编排测试套件”展示了一个最小化的 phpunit.xml 例子,它将在递归遍历 tests 时添加所有在 *Test.php 文件中找到的 *Test 类。

Example1.最小化xml文件

<phpunit bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="money">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

 

如果 phpunit.xml phpunit.xml.dist (按此顺序)存在于当前工作目录并且未使用 --configuration,将自动从此文件中读取配置。

可以明确指定测试的执行顺序:

Example 2. 用 XML 配置来编排测试套件

<phpunit bootstrap="vendor/autoload.php">
  <testsuites>
    <testsuite name="money">
      <file>tests/IntlFormatterTest.php</file>
      <file>tests/MoneyTest.php</file>
      <file>tests/CurrencyTest.php</file>
    </testsuite>
  </testsuites>
</phpunit>

xml实例1

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./vendor/autoload.php" colors="true">
    <testsuites>
        <testsuite name="Design Patterns">
            <directory suffix="Test.php">Behavioral/*/Tests</directory>
            <directory suffix="Test.php">Creational/*/Tests</directory>
            <directory suffix="Test.php">More/*/Tests</directory>
            <directory suffix="Test.php">Structural/*/Tests</directory>
        </testsuite>
    </testsuites>
    <filter>
        <blacklist>
            <directory>./vendor</directory>
        </blacklist>
    </filter>
</phpunit>

xml实例2

<phpunit bootstrap="./booten.php">

    <testsuite name="actionsuitetest">
      <directory suffix=".php">action</directory>

      <file>HuiyuanZhanghuOrder.php</file>

     <exclude>/action/HuiyuanJifenTest.php</exclude>
    </testsuite>
    
    <testsuite name="modelsuitetest">
      <directory suffix=".php">model</directory>
    </testsuite>
    
    <testsuite name="htmlsuitetest">
      <directory suffix=".php">html</directory>
    </testsuite>

    <!-- 代码覆盖率 -->
    <!-- 覆盖率的测试文件,blacklist 黑名单(不需要统计覆盖率的文件),whitelist 白名单(统计覆盖率的测试文件) 当黑名单与白名单文件重复时,白名单起作用 
    
    -->
    <filter>
<blacklist>
    <directory suffix=".php">action</directory>
    <file>ArrayTest.php</file>
  </blacklist>
  
  <whitelist addUncoveredFilesFromWhitelist="true">
   <directory suffix=".php">action</directory>
   <directory suffix=".php">model</directory>
   <directory suffix=".php">html</directory>
   <file>ArrayTest.php</file>
   <exclude>
   <directory suffix=".php">action/lib</directory>
   <directory suffix=".php">model</directory>
   <file>action/lib/Loginxxx.php</file>
   </exclude>
  </whitelist>
</filter>
    
    <!--代码覆盖率报告,可以生成很多类型报告,有html(coverage-html),xml(coverage-clover),txt,json 等等  
    <log type="coverage-php" target="/tmp/coverage.serialized"/>
  <log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
  <log type="json" target="/tmp/logfile.json"/>
  <log type="tap" target="/tmp/logfile.tap"/>
  <log type="junit" target="/tmp/logfile.xml" logIncompleteSkipped="false"/>
  <log type="testdox-html" target="/tmp/testdox.html"/>
  <log type="testdox-text" target="/tmp/testdox.txt"/>
    
    -->
    
        <logging>
         <!-- target(report/html) 生成html 文件的目录-->
  <log type="coverage-html" target="report/html" charset="UTF-8" yui="true" highlight="false" lowUpperBound="35" highLowerBound="70"/>
  <!-- target(report/coverage/coverage.xml) 生成xml的文件名-->
  <log type="coverage-clover" target="report/coverage/coverage.xml"/>
</logging>
    <!-- 代码覆盖率 -->



    <php>
 <includePath>.</includePath>
 <ini name="foo" value="bar"/>
 <const name="foo" value="bar"/>
 <var name="foo" value="bar"/>
 <env name="foo" value="bar"/>
 <post name="foo" value="bar"/>
 <get name="foo" value="bar"/>
 <cookie name="foo" value="bar"/>
 <server name="foo" value="bar"/>
 <files name="foo" value="bar"/>
 <request name="foo" value="bar"/>
</php>  

</phpunit>

xml 解释

xml 解释

bootstrap="./vendor/autoload.php"

在测试之前加载的的PHP 文件,一般可以做一个初始化工作


<testsuite name="actionsuitetest">
      <directory suffix=".php">action</directory>
      <file>Order.php</file>
</testsuite>

测试套件,如果想测试页面,action,model 可以多加几个测试套件

name: 套件名称

directory :套件测试的目录,目录下一般放测试文件的用例

       suffix :测试文件后缀,如果不填写,则默认后缀为*Test.php,即phpunit 默认会执行*Test.php  的文件

       action:测试目录名

file:可以单独设置测试文件

exclude:排除不需要测试的文件

<filter> 元素及其子元素用于配置代码覆盖率报告所使用的白名单。
blacklist 黑名单(不需要统计覆盖率的文件),whitelist 白名单(统计覆盖率的测试文件) 当黑名单与白名单文件重复时,白名单起作用

<logging> 元素及其 <log> 子元素用于配置测试执行期间的日志记录。

 <php>
  <includePath>.</includePath>
  <ini name="foo" value="bar"/>
  <const name="foo" value="bar"/>
  <var name="foo" value="bar"/>
  <env name="foo" value="bar"/>
  <post name="foo" value="bar"/>
  <get name="foo" value="bar"/>
  <cookie name="foo" value="bar"/>
  <server name="foo" value="bar"/>
  <files name="foo" value="bar"/>
  <request name="foo" value="bar"/>
</php>  

这段xml 可以对应以下PHP 代码

includePath

ini_set(‘foo‘,‘bar‘);
define(‘foo‘,‘bar‘);
$GLOBALS[‘foo‘] = ‘bar‘;
$_ENV[‘foo‘] = ‘bar‘;
$_POST[‘foo‘] = ‘bar‘;
$_GET[‘foo‘] = ‘bar‘;
$_COOKIE[‘foo‘] = ‘bar‘;
$_SERVER[‘foo‘] = ‘bar‘;
$_FILES[‘foo‘] = ‘bar‘;
$_REQUEST[‘foo‘] = ‘bar‘;

Reference

PHPUnit 手册
在phpstorm中安装、配置和运行phpunit详细教程
PHP单元测试使用
phpunit5.0中文手册
phpunit XML 配置文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


createdtime20211113updatedtime20211113authorvenki.chen说明GoLand的多数配置方法其实和PHPStorm是一样,所以一些配置方法可以借鉴我的另一篇文章PHPStorm——配置记录(持续更新中……)。此篇文件主要记录一些与PHPStorm不一样的配置方法。1.GoLand配置文
Phpstorm是大多数PHP程序员们爱不释手的一款编码的集成开发工具。它支持所有PHP语言功能,提供最优秀的代码补全、重构、实时错误预防等等功能。但是对于一些php新手来说,总会有这样一个疑问,phpstorm免费吗?显然这个问题对于下载过phpstorm工具的朋友们都知道,phpstorm有30天的试
 PHPStorm设置打开您的项目,一旦打开,转到首选项并在语言和框架>PHP分支下查找解释器。使用解释器旁边的三个点按钮[...]添加一个新的解释器,这将打开一个新的选项窗口。在新窗口的顶部有一个带加号的按钮可以添加新的解释器,然后点击该按钮并从选项列表中选择 将打开一个新
前言:简单介绍下为什么要用断点调试,很多人说我在代码调试的部位用var_dump或者exit或者print_r来进行断点,但是当项目足够大的时候这样的做法就比较费时费力,因为你断点后需要删除原有的打印,很多时候我们自己也不知道在什么地方打印,但是安装断点调试就可以解决这些问题,越用你
所以我在PHPStorm7.1中运行PHPUnit,但是我无法找到如何在测试中使用ANSI颜色代码.我的PHPunit.xml在属性列表中有colors=“true”,但每次我尝试类似的东西:echo"\033[31mError!Error!\033[0m\n";在我的一个测试用例中,它只是给了我:[31mError!Error![0m在PHPstormphpun
参考:下载合适的XDebug点击这里,选择合适xdebugXAMPP配置php_xdebug-xxxx.dll拷贝dll至D:\XAMPP\php\extphp.ini文末追加[XDebug]zend_extension="D:\XAMPP\php\ext\php_xdebug-2.7.0RC2-7.3-vc15.dll"xdebug.profiler_append=0xdebug.profiler_enable=0xdebug.pro
由于公司的显示器太小了,或者是我太近视了,查找起文件来不是很方便,需要设置软件的系统字体。网上都是修改代码字体,那么系统字体如何修改呢?只要打开界面按下Alt+Ctrl+s(或选择【文件】——》【设置】)按如下配置即可 
下载MAMPPRO与Phpstorm运行MAMPPRO界面如下:默认首页添加运行打开调试选项修改配置文件在[xdebug]增加xdebug.idekey="PHPSTORM"配置运行环境添加调试开启调试测试
有用,还是搜了一会的:https://segmentfault.com/q/1010000008913082/a-1020000008913387
step1:修改本地hosts文件,无论是windows还是linux,从中添加这行代码0.0.0.0account.jetbrains.com保存。目的是为了避免phpstorm联网注册时失败step2:用浏览器打开http://idea.lanyus.com/,点击页面中的获得注册码,拷贝后运行phpstorm,拷贝到activationcode即可激活
在EditPlus中使用快捷键Ctrl+D即可插入当前日期,但在PHPStorm中似乎没有这样的快捷键,那如何实现快速插入当前日期呢?其实很简单,跟我做一遍你就会了:目标为PHPStorm定义一个"to"简写,实现在php注释中插入当前日期。设置方法:Ctrl+Shift+A,输入字符串“livetemplates”,回车键。此时出
今天带来了phpstorm2018激活版,phpstorm是旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查功能。与PHP的现代和旧版本兼容,并且还具有代码自动完成,动态错误预防,重构和语言混合支持。通过不断分析整个项目,大量检查可确保您键入代码的质量。phpstorm
本文章介绍一些实用的PhpStorm的小技巧:1.设置PhpStorm主题(1)打开Settings……(设置) (2)选择Appearance(外观)(3)选择下拉框Theme(主题)2.设置编辑器菜单字体3.修改编辑器代码处的字体4.快捷键的设置015.打开行号/关闭行号搜索ShowlineNumber6.切换代码Tab页快捷键:ALT+
其实做PHP大家应该都听说过bootstrap的存在对吧,但是有些朋友们在第一次接触的时候,就被bootstrap所谓的响应式给弄蒙了。今天我们就来讲一讲bootstrap的简单搭建页面,只需要你有HTML的基础知识加上所谓的官方手册,这一切就很轻松的搞定了。首先我们先来看看官网的手册,这里是boots
安装第一步:解压并打开文件,运行安装程序,点击Next进入下一步,第二步:选择软件安装目录,自定义选择安装根目录-->注意!后面还需要找安装目录里的文件,所以记住安装到一个比较容易查看的目录下第三步:勾选“创建桌面快捷方式”和“选择关联文件选项”。(CreateDesktopshortcut:创建
我有一个非常奇怪的情况,PhpStorm似乎没有抓住我的断点,除非我启用了监听按钮启动测试,然后启动后,我然后禁用按钮.请参阅下面的屏幕截图和配置文件.关于我可能配置错误的任何想法?这是PhpStorm在“挂起”时在控制台中显示的内容–Testingstartedat12:57PM.../usr/loca
场景在使用phpstorm等IDE编辑器编写php代码时,为了更方便的调试,我们需要安装一款php的扩展插件xdebug。本实例当前运行环境为phpstudy集成环境。步骤step1进入xdebug官网,进入用户下载引导页游览器输入网址:https://xdebug.org或者直接搜索xdebug进入网站。点击下方downloa
我创建了一个phpunit测试文件,当我尝试通过phpstorm运行它时,我收到消息:Unabletoattachtestreportertotestframeworkortestframeworkquitunexpectedly似乎执行以下命令:/usr/local/bin/php/private/var/folders/4b/qrnw7nbd6llgmhrss5rf1_880000gt/T/ide-phpun
我的PHPStorm突然开始收集文件的速度非常慢.我现在不可能使用PHPStorm进行部署.每次部署任何东西时,它只会保留“收集文件”5-10分钟.即使它只是一个文件我在论坛上问过,但没有回答.有人报告它是一个错误,但没有发生任何事情.这是一个Laravel项目,不知道是否有任何影响.它刚从无