本地環境可以跑通,但只要一上機器人環境,便會出現錯誤。一般這種情況都是由於本地與travis
的JDK
版本不一致造成的。然而,機器人又有日誌大粘限制,這就決定了,我們不可能將日誌等級開啓到debug
來調試錯誤。
思索:是否可以使用日誌插件,將日誌保存爲文件,然後將文件回傳到我們的服務器,再然後查看問題所在呢?
有沒有辦法來規避這一情況呢?
思路
最科學的辦法
統一本地與機器人的版本了。
但:雖然版本統一了,但操作系統又很難統一。再結合開發環境與生產環境的不同,我們很難做到所有的環境完全統一。
曲線救國
既然只有機器人報錯,那麼本地測試好後,可以考慮將機器人報錯的部分做排除。雖然這不是最好的方法,但在時間寶貴的前提下(機器人10分鐘測試跑一次,改一次再測試10分鐘,改了6次,就要等1小時),也只能如此了。
方法
配置文件支持
將機器人環境統一寫到配置文件的某profiles
中,然後命名:travis
,並在啓用機器人測試時,啓用該命名:
spring:
profiles:
# 開發過程中,請將 travis 修改爲 test
active: ${active:test}
測試文件中,注入該值,並做排除
@Value("${spring.profiles.active}")
private String active;
public void test() {
if (!this.active.equals("travis")) {
// 機器人中報錯的代碼
}
}
總結
生產環境、測試環境、開發環境的不一致問題,會帶來一定的困擾,而且一旦發生問題,比如生產環境中發現問題,由於缺少中斷環境,則會在排錯時浪費大量的時間。
travis
雖然好用,但卻不能自己定義具體的JDK信息(它的JDK就那幾種,比如ORACLE-JDK8就一個),打造自己的單元測試服務器迫在眉睫。
構想:
開發環境(不限)、測試環境同生產環境(OPENJDK)。由於openjdk可以安裝到Linux系統中,一旦開發環境(非liunx)與測試環境表現不一致,則可以切到liunx系統中來進行問題的調試。
學習機器人自動生成的shell,建立自己的shell。同時,開發一個小應用,來對接github
。接收到github
信息後,檢出相應的分支,執行單元測試,並將測試的結果推送給github
help
I need help! Thank you!