ATU 擴充套件,改變你的開發方式! 基於註解的單元測試神器

iblues發表於2020-04-03

1.開發完介面, 切換到postman測試, 去資料庫看看是否正常. 來回切換
2.完全不寫單元測試, 或者懶得寫單元測試 , 又或者不知道單元測試是什麼?
3.重構程式碼的時候, 改了一個一行程式碼, 結果引起另外一個地方出問題了,但是完全不知道.

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資訊,否則僅報錯時候輸出.

 //請確保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支援 謝謝

1.開發完介面, 切換到postman測試, 去資料庫看看是否正常. 來回切換
2.完全不寫單元測試, 或者懶得寫單元測試 , 又或者不知道單元測試是什麼?
3.重構程式碼的時候, 改了一個一行程式碼, 結果引起另外一個地方出問題了,但是完全不知道.

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 協議》,轉載必須註明作者和本文連結

相關文章