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