摘要:另外,与模板方法将分别在测试用例类的第一个测试运行之前和测试用例类的最后一个测试运行之后调用。
本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架
PHPUnit测试一个文件类的生命周期 理解PHPUnit加载机制(Lumen版)PHPUnit自动测试文件会自动加载引入(include file)
PHPUnit去启动setUp方法,Lumen里重写了setUp,加载了bootstrap/app.php
app.php加载了composer的autoload,借此你项目所有自动加载环境都有了,不过不包含tests目录
至此我们引入了我们需要构建自己的自动加载类
增加tests的自动加载 我们需要给tests下的测试用例创建类似下面的结构├── BaseCase.php 重写过Lumen基类的测试基类,用于我们用这个基类做测试基类,后续会说明 ├── bootstrap.php tests自动加载文件 ├── Cases 测试用例目录 │ └── Demo 测试模块 │ ├── logs 日志输出目录 │ ├── PipeTest.php PHPUnit流程测试用例 │ ├── phpunit.xml phpunit配置文件xml │ └── README.md 本模块测试用例说明 ├── ExampleTest.php 最原始测试demo └── TestCase.php Lumen自带的测试基类tests自动加载文件代码
phpunit.xml自动加载配置bootstrap文件
流程测试代码 TestCase.php # 代码头部添加 命令空间Test namespace Test;PipeTest 流程代码assertTrue(true); } public function testTwo() { fwrite(STDOUT, __METHOD__ . " "); // 两个交换下顺序可以看下效果 // 正常执行成功assert可以继续执行,失败的会跳出方法 $this->assertArrayHasKey("d", ["d"=>1, "e"=>2]); $this->assertTrue(false); } public function testThree() { fwrite(STDOUT, __METHOD__ . " "); $this->assertTrue(false); } public function testFour() { fwrite(STDOUT, __METHOD__ . " "); } /** * 测试方法成功后的后置执行,tearDown之前 */ protected function assertPostConditions() { fwrite(STDOUT, __METHOD__ . " "); } public function tearDown() { fwrite(STDOUT, __METHOD__ . " "); } public static function tearDownAfterClass() { fwrite(STDOUT, __METHOD__ . " "); } /** * 不成功后拦截方法 * 必须重新抛出错误,如果不抛出错误,断言会当成成功了 */ public function onNotSuccessfulTest(Throwable $e) { fwrite(STDOUT, __METHOD__ . " "); // 必须重新抛出错误,如果不抛出错误,断言会当成成功了 throw $e; } }运行# 你可以把vendor/bin加入到环境变量PATH cd tests/Demo ../../../vendor/bin/phpunit运行输出PHPUnit 6.5.9 by Sebastian Bergmann and contributors. TestCasesDemoPipeTest::setUpBeforeClass TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testOne TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown .TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testTwo TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest FTestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testThree TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest FTestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testFour TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown R 4 / 4 (100%)TestCasesDemoPipeTest::tearDownAfterClass Time: 1.29 seconds, Memory: 6.00MB There were 2 failures: 1) TestCasesDemoPipeTest::testTwo Failed asserting that false is true. /xxx/tests/Cases/Demo/PipeTest.php:47 2) TestCasesDemoPipeTest::testThree Failed asserting that false is true. /xxx/tests/Cases/Demo/PipeTest.php:53 -- There was 1 risky test: 1) TestCasesDemoPipeTest::testFour This test did not perform any assertions FAILURES! Tests: 4, Assertions: 4, Failures: 2, Risky: 1. Generating code coverage report in HTML format ... done整理流程输出TestCasesDemoPipeTest::setUpBeforeClass TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testOne TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testTwo TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testThree TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testFour TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::tearDownAfterClass总结一个测试类文件,从setUpBeforeClass加载,且仅此加载一次参考
每个测试方法都会走的过程:setUp->assertPreConditions->测试方法->[assert成功执行:assertPostConditions]->tearDown->[assert执行失败:onNotSuccessfulTest,且本方法需要抛出错误]
本个测试类文件执行tearDownAfterClass结束PHPUnit 6.5 官方文档
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/8900.html
摘要:另外,与模板方法将分别在测试用例类的第一个测试运行之前和测试用例类的最后一个测试运行之后调用。 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 PHPUnit测试一个文件类的生命周期 showImg(https://segmentfault.com/img/bVbnXJj?w=1330&h=1186); 理解PHPUnit加载机制(Lumen...
摘要:组件类似于中的,实现类似轮播图的效果,相对于的实现起来更加方便,快捷。swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷。 效果图: 首先看下swiper支持的属性: --------------------------------------------------------...
摘要:另外一些单元测试可能会测试负向路径的场景,保证代码不仅会产生错误,而且是预期的错误。是一个面向程序员的测试框架,这是一个的体系结构的单元测试框架。 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我们的普通用到的测试: 代码直接echo,debug等方法测试 -> 跟踪细节断点型测试 log日志辅助测试 -> 跟踪细节断点型测试 ...
摘要:另外一些单元测试可能会测试负向路径的场景,保证代码不仅会产生错误,而且是预期的错误。是一个面向程序员的测试框架,这是一个的体系结构的单元测试框架。 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我们的普通用到的测试: 代码直接echo,debug等方法测试 -> 跟踪细节断点型测试 log日志辅助测试 -> 跟踪细节断点型测试 ...
摘要:本系列教程所有的测试基于版本,框架目录结构模块下的目录是符合的模块结构的如等是模块目录下的结构目录如果有自己的目录同级分配即可,如我这里的整体结构重写过基类的测试基类,用于我们用这个基类做测试基类,后续会说明自动加载文件测试用例目录某测试模 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 目录结构 模块下的目录是符合Lumen的模块结构的如:...
阅读 3242·2021-10-21 17:50
阅读 3253·2021-10-08 10:05
阅读 3379·2021-09-22 15:04
阅读 580·2019-08-30 14:00
阅读 1938·2019-08-29 17:01
阅读 1507·2019-08-29 15:16
阅读 3218·2019-08-26 13:25
阅读 851·2019-08-26 11:44