ATU 扩展,改变你的开发方式! 基于注解的单元测试神器

开发API接口,有遇到以下情况么?

1.开发完接口, 切换到postman测试, 去数据库看看是否正常. 来回切换
2.完全不写单元测试, 或者懒得写单元测试 , 又或者不知道单元测试是什么?
3.重构代码的时候, 改了一个一行代码, 结果引起另外一个地方出问题了,但是完全不知道.

来试试Laravel扩展 ATU神器!

https://github.com/iblues/atu 顺手来个start就更好了:blush:
演示

看起来有点傻, 能解决什么问题?(划重点)

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 协议》,转载必须注明作者和本文链接
iblues
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!