前言:

基于项目中使用swoft写Api接口服务,要求使用phpunit单元测试,趟过两个大坑。

1. 报各种类的找不到,原因是swoft框架测试基础类SwoftTest\Testing\TestApplication 无法自动加载。

解决办法:需要手动加载,更改文件test/bootstrap.php
<?php
use Composer\Autoload\ClassLoader;
use SwoftTest\Testing\TestApplication;/** @var ClassLoader $loader */
$loader = require dirname(__DIR__) . '/vendor/autoload.php';$componentDir  = dirname($loader->findFile("Swoft"), 2);
$componentJson = $componentDir . '/composer.json';
$composerData  = json_decode(file_get_contents($componentJson), true);
foreach ($composerData['autoload-dev']['psr-4'] as $prefix => $dir) {$loader->addPsr4($prefix, $componentDir . '/' . $dir);
}
//$FormPage= new \App\Testing\Entity\FormPage();
//var_dump($loader);die;$application = new TestApplication();
$application->setBeanFile(__DIR__ . '/testing/bean.php');
$application->run();

2. 报关于协程的错误

PHP Fatal error:  Uncaught Swoole\Error: API must be called in the coroutine in /webroot/vendor/swoft/connection-pool/src/AbstractPool.php:296
解决办法:

到swoft兄弟项目Hyperf测试组件,把co-phpunit复制到你想放到的位置,我自己放到vender/bin/目录下,执行测试时用vendor/bin/co-phpunit就可以了。

[root@you webroot]# vendor/bin/co-phpunit --configuration phpunit.xml --coverage-text --colors=never
PHPUnit 7.5.18 by Sebastian Bergmann and contributors......                                                               5 / 5 (100%)Time: 4.77 seconds, Memory: 38.00 MBOK (5 tests, 5 assertions)Generating code coverage report in HTML format ... doneCode Coverage Report:      2019-12-18 19:47:35      Summary:                  Classes:  2.33% (2/86)   Methods:  3.67% (19/518) Lines:    4.55% (61/1340)

后续再有什么坑,之后再写!!!!!!

Swoft单元测试基本坑相关推荐

  1. 记录学习Mockito单元测试的坑——空指针异常

    记录学习Mockito单元测试的坑--空指针异常 情况一 mockito-all依赖和mockito-core依赖同时引用时,可能会报空指针异常 正确引用 <!--导入junit单元测试依赖-- ...

  2. go单元测试踩坑记录

    Go踩坑记录 1. go单元测试 测试文件名字必须是xxx_test后缀 测试函数必须是Test开头(否则报错,no test to run) 1.1 gomock单元测试 gomock对接口进行打桩 ...

  3. Spock单元测试踩坑

    1.where块使用@Shared变量踩坑 场景描述 where块中使用了@Shared变量,变量在setup()中初始化 debug时发现图中位置1的createParam.vin与位置2中的cre ...

  4. 其他service 单例 工具类_获取不到,虚拟来凑?这个工具不得不学!

    在真实的测试当中,并不是所有的逻辑都可以自己控制,因此有了Mock测试.今天就结合场景来讲一下怎么做Mock测试. 适合对象:初次尝试集成和使用Mockito进行单元测试的开发同学. Mock框架的集 ...

  5. android mockito,mockito

    PowerMock相关2021-05-27 19:32:24 Mock外部服务调用 PowerMockito.when([外部类].[调用的方法](Mockito.anyInt(),Mockito.a ...

  6. dubbo 单元测试_技术分享——一路踩坑构建Dubbo源码

    源码环境 随着目前对技术栈的求知欲,也开始入手Dubbo源码啦!!! 构建源码第一步: 必备开发环境:Java 1.5 以上的版本:Maven 2.2.1 或者以上的版本: 官网下载源代码 官网构建文 ...

  7. .NetCore技术研究-ConfigurationManager在单元测试下的坑

    最近在将原有代码迁移.NET Core, 代码的迁移基本很快,当然也遇到了不少坑,重构了不少,后续逐步总结分享给大家.今天总结分享一下ConfigurationManager遇到的一个问题. 先说一下 ...

  8. springboot 单元测试使用 @value读取不到值, yml的两个坑

    yml两个坑 yml 和 properties都可以作为配置文件在springboot项目中使用 1.缩进问题 yml使用空格缩进代表包之间的层级问题,有时候差一个空格就可能导致配置不生效.另外,在同 ...

  9. Swoft 踩坑笔记六 - 代码调试

    调试不了,弃坑! var_dump,print_r,echo 通通都不能用.返回显示的是什么都没有.                                     研究了一晚上都没力气了,别 ...

  10. swoft 学习之 踩坑笔记

    1. Redis 写入数组 1.1 不开启自动序列化–> 读到的是一个字符串("array") vdump('0',$device);$result = $redis-> ...

最新文章

  1. ISME:土壤微生物对硫的短期及长期利用的决定因素-基于13C,15N,14C和35S多同位素标记结果...
  2. 【错误记录】Android Studio 编译报错 ( Cannot use connection to Gradle distribution . as it has been stopped. )
  3. 2021-03-15 耗散性
  4. LVS+KEEPALIVED+nginx 7
  5. C++ i/o类库中 常用流类
  6. 蓝牙耳机音量大解决办法_长时间使用蓝牙耳机的危害这么大?我们到底该选什么蓝牙耳机呢?...
  7. Java程序员的自我修养?
  8. 【Elasticsearch】Request cannot be executed;I/O reactor status :STOPPED.
  9. 带reportView的winform程序在部署安装的时需要装两个框架,一framework框架二就是reportviewer的安装包...
  10. 4.28下午 听力611
  11. 华为手表广告营销案例和广告策划案例PPT模板
  12. 塔科夫服务器修改器,逃离塔科夫修改器+15项
  13. unity 物体移动方式的一些笔记
  14. 卡尔曼滤波实例——预测橘子的轨迹
  15. TCP IP地址和端口号设置
  16. Maven项目无法引入 Maven Dependencies Libraries 问题
  17. www.cqyc.com:8888 10118 - x天后星期几?
  18. 阿里云MaxCompute携手华大基因打造精准医疗应用云平台
  19. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 6-8
  20. 财务管理系统项目方案

热门文章

  1. K - 迷宫问题 POJ - 3984(广度搜索)
  2. python中https请求的封装_python接口自动化9-https请求(SSL)
  3. python学习(六)----文件和异常
  4. vue 鼠标点击绘制任意多边形_神操作!PPT也能绘制城市轮廓线
  5. python需要学数据结构吗_我也要学python-内置数据结构(一)
  6. vs 生成get set_使用EasyCode+Lombok快速生成增删查改的代码
  7. mysql 字符串 反转_MySQL笔记之字符串函数的应用
  8. oracle 字段带数字,Oracle字符串中包含数字、特殊符号的排序
  9. maven 打包父工程_maven 父子工程打包 并且上传linux服务器
  10. 计算机简单进制转换题目,计算机数制转换题!(1011011)2 =( )10=( )16 =( )8(110111101)2 =( )10=(...