一、Kotlin對APP測試意味著什么
Kotlin最終會被編譯成Java bytecode,然后變成APK。如果APP部分或者全部使用Kotlin開發(fā),會對現(xiàn)在的測試體系有影響。靜態(tài)代碼分析工具,比如findbugs, Android Lint, Sonar這類,這些工具的影響是最大的。
因為有些是直接和源代碼打交道的,但是不用擔(dān)心,Kotlin的開發(fā)工具已經(jīng)慢慢開始,包括語法檢查,各種靜態(tài)分析也會慢慢抓上來 UI自動化工具,例如Appium, Calabash, Robotium:只要Java一天不死,這些工具總是能用,無論Kotlin怎樣,最終還是可以直接和原生Java代碼銜接的,以前的Robotium Java用例照樣能跑,Appium之類的直接從Uiautomator這種點擊View的,更是沒有關(guān)系。這里要說到一個有趣的東西 Anko,是專門用來輔助Android Kotlin開發(fā)的,里面有一個Anko Layout,直接在代碼里面用Kotlin定義layout,拋棄XML:
override fun onCreate(savedInstanceState: Bundle?) {
??? super.onCreate(savedInstanceState)
??? verticalLayout {
??????? padding = dip(30)
??????? editText {
??????????? hint = “Name”
??????????? textSize = 24f
??????? }
??????? editText {
??????????? hint = “Password”
??????????? textSize = 24f
??????? }
??????? button(“Login”) {
??????????? textSize = 26f
??????? }
??? }
}
所以以后找id什么的事情,可能會有變化,這也取決于開發(fā)團隊使用Kotlin的程度。
SDK工具:bugly, LeakCanary等:完全不受到影響,只要是Java的庫Kotlin可以無縫連接,這點要表揚下Kotlin的兼容性。?插樁工具:Appetizer, JaCoCo, Emma,插樁工具向APP中添加測量代碼來完成任務(wù),JaCoCo/Emma的代碼覆蓋率和Appetizer的崩潰、性能、Http、卡頓監(jiān)控等都是這樣。Appetizer是直接在Dalvik代碼上插樁的,所以和源代碼是用什么語言開發(fā)的沒有關(guān)系;JaCoCo是在Gradle中間,對Javac產(chǎn)生的bytecode插樁,也是一樣,和源代碼沒關(guān)系,所以繼續(xù)能用。APK啟動后的工具,包括Proxy工具,Mock工具,弱網(wǎng)模擬:都沒事延伸閱讀:
二、Kotlin歷史
Kotlin并不年輕,JetBrains 公司早在2011年七月就宣布了 Kotlin 項目。JetBtrains是捷克一家出產(chǎn)IDE的公司,比較知名的產(chǎn)品有 IntelliJ, WebStorm, PyCharm, CLion等,Google在拋棄了Eclipse搞出的Android Studio,就是基于IntelliJ開發(fā)的。JetBrains的產(chǎn)品基本涵蓋了市面上主要的編程語言,一般是免費版和收費增強版,對高校學(xué)生也是非常好的。有興趣的可以去看一下他們的產(chǎn)品,Appetizer團隊還是很喜歡他們的IDE的。
2012年2月,Kotlin開源。知道2016年2月,Kotlin 名列前茅個穩(wěn)定版本 1.0發(fā)布。
當(dāng)然2017年 Google IO上宣布Kotlin 作為 Android 的一級開發(fā)語言
值得注意的還有,2013年的Google IO宣布了Android Studio,也就是說 Google和JetBrains有一定年頭了。但是Kotlin還是比較年輕,下面是Github上用Kotlin寫的項目的數(shù)量,和右邊其他主流語言比比還是有非常漫長的路要走。