ATU 扩展,改变你的开发方式! 基于注解的单元测试神器
开发API接口,有遇到以下情况么?
1.开发完接口, 切换到postman测试, 去数据库看看是否正常. 来回切换
2.完全不写单元测试, 或者懒得写单元测试 , 又或者不知道单元测试是什么?
3.重构代码的时候, 改了一个一行代码, 结果引起另外一个地方出问题了,但是完全不知道.
来试试Laravel扩展 ATU神器!
https://github.com/iblues/atu 顺手来个start就更好了
看起来有点傻, 能解决什么问题?(划重点)
1.快速调试,无需切换窗口. 可^R 或者 使用保存检测. 随时查看结果.
2.顺便收货一套完整的API单元测试. 让你重构无忧, 上线正式环境不再担心.(划重点)
3.方便debug,可以查看当次请求的所有SQL语句, 甚至可以配合telescope快速使用!
4.可使用 xdebug 实现断点调试. 无需chrome扩展!
5.独立事务机制, 开发测试不会脏数据库了!
6.快速的文件调整机制,快速打开出错文件! 不用根据错误提示一个个去找文件了
7.生成对应API文档(开发中…)
8.当其他人拿到你的代码的时候. 通过ATU就可以快速执行,并大致了解该接口的关键点(如果你写了足够断言)
可能有人会排斥注解的方式. 这跟java的注解不一样. 完全不影响代码逻辑.
开始尝试
1.安装扩展
composer require iblues/atu --dev
2.配置好单元测试
参考:https://www.w3cschool.cn/intellij_idea_doc...
3.选择任意控制器
参考以下示例对您自己的控制器进行注解.
其中@ATU\Now() 代表需要当前执行.
@ATU\Debug()代表需要输出完整DEBUG信息,否则仅报错时候输出.
PS:请确认有匹配的路由, 程序是根据路由的映射表进行查找
会自动根据路由获取对应的url路径, 所有无需定义url
//请确保use以下
use Iblues\AnnotationTestUnit\Annotation as ATU;
//请确认有匹配的路由, 程序是根据路由的映射表进行查找. 如果路由映射错误, 会无法执行. 后期会处理这种问题
/**
* @ATU\Api(
* @ATU\Now(),
* )
*/
public function index(Request $request){//...}
/**
* 请确保 xx/xx/1有数据
* @ATU\Api(
* "path":1,
* @ATU\Now(),
* )
*/
public function show($id,Request $request){//...}
4.发布测试文件
执行以下命令,会创建tests/api/AtuTest.php. 测试该文件即可. Tips: ctrl+r / 开启toggle auto test 即可重新运行测试,加快效率!
php artisan vendor:publish --tag ATU
会创建tests/api/AtuTest.php. 对该文件执行单元测试即可. Tips: ctrl+r / 开启toggle auto test 即可重新运行测试,加快效率!
其中有3个方法
1.testNow 执行有@ATU\Now注解的测试,用于快速开发调试
2 testAll 执行所有ATU参数.
3.testRouter 检查有标记@ATU\API但是没有对应路由的
5.相关phpstorm扩展
可以不安装, 此扩展是为了代码补全和提示.
1.安装phpstorm插件.
https://plugins.jetbrains.com/plugin/index...
2.设置插件 language & framew -> php ->annotations ->Use Alias 新增 Iblues\AnnotationTestUnit\Annotation as ATU
说说使用
DEMO可以参考https://github.com/iblues/atu/blob/master/...
常用的几个注解
@ATU\Now()
由于平时开发我们不需要跑全部测试,可以给要执行的测试标记NOW,只跑当前
@ATU\Debug()
开启debug信息,方便调试,也可以在tests/api/AtuTest.php中的$->debug=true全面开启.
@ATU\Request()
get,post,put的变量都写在里面. PS: get类似?id=1的也需要写成@ATU\Request({“id”:1})
@ATU\Response()
断言返回结果是不是想用的. 支持正则! 默认不填仅验证200
常用几种
@ATU\Response({“data”:{“title”:”/[0-9]*?/i”}})
@ATU\Response(422,{“data”:{“title”:true}})
@ATU\Response(401)
还有很多高级用法
@ATU\Assert()
使用phpunit的默认断言
如: 判断test_test表中,是否有title = 返回结果中$.data.title的值(动态获取).用来检测是否有写入数据库
@ATU\Assert(“assertDatabaseHas”,{“test_test”,{“title”:@ATU\GetResponse(“data.title”)} }),
还有很多,详情见文档
@ATU\Before()
在执行每个ATU前,执行前置方法. 例如创建用户, 又或者调用另外一个ATU
举例. 在执行修改API前,先执行写入API. 用写入成功的id,给修改使用.
@ATU\Tag()
给ATU标记. 方便Before调用,又或者分组调用.
还有很多其他用法. 请参考文档
注意事项:
由于第三方扩展限制,注解中不支持[]的json 都必须用{} . 举例: [1,2,3]错误. {1,2,3}正确!
字符串引用不支持单引号 {‘test’:123} 错误, {“test”:123}正确.
@ATU\API中,每个参数之间注意逗号!
谢谢支持
技术沟通QQ群: 814333044
能顺手给start支持 谢谢
开发API接口,有遇到以下情况么?
1.开发完接口, 切换到postman测试, 去数据库看看是否正常. 来回切换
2.完全不写单元测试, 或者懒得写单元测试 , 又或者不知道单元测试是什么?
3.重构代码的时候, 改了一个一行代码, 结果引起另外一个地方出问题了,但是完全不知道.
来试试Laravel扩展 ATU神器!
https://github.com/iblues/atu
看起来有点傻, 能解决什么问题?
1.快速调试,无需切换窗口. 可^R 或者 使用保存检测. 随时查看结果.
2.顺便收货一套完整的API单元测试. 让你重构无忧, 上线正式环境不再担心.(划重点)
3.方便debug,可以查看当次请求的所有SQL语句, 甚至可以配合telescope快速使用!
4.可使用 xdebug 实现断点调试. 无需chrome扩展!
5.独立事务机制, 开发测试不会脏数据库了!
6.快速的文件调整机制,快速打开出错文件! 不用根据错误提示一个个去找文件了
7.生成对应API文档(开发中…)
开始尝试
1.安装扩展
composer require iblues/atu --dev
2.配置好单元测试
参考:https://www.w3cschool.cn/intellij_idea_doc...
3.选择任意控制器
参考以下示例对您自己的控制器进行注解.
其中@ATU\Now() 代表需要当前执行.
@ATU\Debug()代表需要输出完整DEBUG信息,否则仅报错时候输出.
//请确保use以下
use Iblues\AnnotationTestUnit\Annotation as ATU;
//请确认有匹配的路由, 程序是根据路由的映射表进行查找. 如果路由映射错误, 会无法执行. 后期会处理这种问题
/**
* @ATU\Api(
* @ATU\Now(),
* )
*/
public function index(Request $request){//...}
/**
* 请确保 xx/xx/1有数据
* @ATU\Api(
* "path":1,
* @ATU\Now(),
* )
*/
public function show(Request $request){//...}
执行以下命令,会创建tests/api/AtuTest.php. 测试该文件即可. Tips: ctrl+r / 开启toggle auto test 即可重新运行测试,加快效率!
4.发布测试文件
php artisan vendor:publish --tag ATU
会创建tests/api/AtuTest.php. 对该文件执行单元测试即可. Tips: ctrl+r / 开启toggle auto test 即可重新运行测试,加快效率!
其中有3个方法
1.testNow 执行有@ATU\Now注解的测试,用于快速开发调试
2 testAll 执行所有ATU参数.
3.testRouter 检查有标记@ATU\API但是没有对应路由的
5.相关phpstorm扩展
可以不安装, 此扩展是为了代码补全和提示.
1.安装phpstorm插件.
https://plugins.jetbrains.com/plugin/index...
2.设置插件 language & framew -> php ->annotations ->Use Alias 新增 Iblues\AnnotationTestUnit\Annotation as ATU
说说使用
DEMO可以参考https://github.com/iblues/atu/blob/master/...
常用的几个注解
@ATU\Now()
由于平时开发我们不需要跑全部测试,可以给要执行的测试标记NOW,只跑当前
@ATU\Debug()
开启debug信息,方便调试,也可以在tests/api/AtuTest.php中的$->debug=true全面开启.
@ATU\Request()
get,post,put的变量都写在里面. PS: get类似?id=1的也需要写成@ATU\Request({“id”:1})
@ATU\Response()
断言返回结果是不是想用的. 支持正则! 默认不填仅验证200
常用几种
@ATU\Response({“data”:{“title”:”/[0-9]*?/i”}})
@ATU\Response(422,{“data”:{“title”:true}})
@ATU\Response(401)
还有很多高级用法
@ATU\Assert()
使用phpunit的默认断言
如: 判断test_test表中,是否有title = 返回结果中$.data.title的值(动态获取).用来检测是否有写入数据库
@ATU\Assert(“assertDatabaseHas”,{“test_test”,{“title”:@ATU\GetResponse(“data.title”)} }),
还有很多,详情见文档
@ATU\Before()
在执行每个ATU前,执行前置方法. 例如创建用户, 又或者调用另外一个ATU
举例. 在执行修改API前,先执行写入API. 用写入成功的id,给修改使用.
@ATU\Tag()
给ATU标记. 方便Before调用,又或者分组调用.
还有很多其他用法. 请参考文档
注意事项:
由于第三方扩展限制,注解中不支持[]的json 都必须用{} . 举例: [1,2,3]错误. {1,2,3}正确!
字符串引用不支持单引号 {‘test’:123} 错误, {“test”:123}正确.
@ATU\API中,每个参数之间注意逗号!
谢谢支持
技术沟通QQ群: 814333044
能顺手给start支持 谢谢
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: