JAVA中什么是埋點?
一個非常好的問題。我是工作多年的Web應用架構師,來回答一下這個問題。歡迎關注我,了解更多IT專業知識。
一,埋點是什么?埋點是軟件開發中的一個術語,用于采集數據或者驗證代碼執行過程,不只是Java才有,各種開發語言中都有成熟的SDK開發包和框架使用。
埋點的場景有多種,可以在程序執行時,還有在單元測試時??梢栽诜掌鳎部梢栽诳蛻舳???梢允占绦蜻\行數據,也可以收集用戶數據。
二,單元測試時的埋點重點補充單元測試時用到的埋點技術。
單元測試的目的是測試被測函數。但是被測函數往往不是那么“簡單”,首先有入參,其次要依賴使用其它的變量、函數、數據、還有第三方接口,等等。
被測試函數的代碼執行路徑也會有多個,比如if-else,異常處理。
如何模擬不同的場景,控制被測函數的運行依賴環境,驗證運行過程和返回結果是否符合預期?以Java開發為例,使用JUnit + Mockit,一個典型的單元測試組成如下:
1. mock模擬依賴的數據、變量、函數、第三方接口,等等
2. stub打樁埋點,設置期望的執行過程、入參、出參等信息。
3. verify驗證代碼執行過程,比如埋點的函數被調用了1次,入參是abc。
4. doThrow設置異常拋出,驗證異常發生時的處理邏輯是否符合預期。
三,單元測試的埋點示例舉個例子,被測試函數parseMsg(),讀取ActiveMQ消息內容,轉換成JSONObject
1,模擬入參TestMessage
2,在getText()函數處打樁埋點,設置返回值
3,調用被測試函數,驗證getText()函數被調用了一次
4,驗證異常發生時,處理邏輯是否正確
上一篇如何刪除java環境變量
下一篇成員變量是什么