前提

大家好,我是 LINE Taiwan 的 Technical Evangelist - Evan Lin。在 2020/10/21 的晚上,很開心能夠再邀請 TWJUG 社群來到 LINE 台北辦公室來舉辦社群聚會。這次的講者一共有四位,而其中來自於 LINE 的講者主要是 TECHFRESH 的 Wayne Wu ,來自 LINE 購物團隊的 Joanna Hu 與 Andy Chen。

活動網址: KKTIX: https://twjug.kktix.cc/events/twjug202010

開場 LINE TECHFRESH 介紹

LINE 台灣工程團隊每年透過 LINE TECH FRESH – 技術新星人才計劃,招募資訊科技相關科系,或對此領域有所涉略的大學生 / 研究生加入 LINE 團隊進行長期實習 (一年期),讓同學們能在國際級科技公司中觀摩學習。

更多內容,可以參考這篇文章: LINE TECH FRESH – 技術新星人才計劃,實習經驗大公開

每一位實習同學都會分配到不同的團隊中,擔任著團隊裡面的種子工程師。經過一些內部與訓練型專案的指導,讓每一位參與的同學能夠了解跨國產品的開發流程與大公司的軟體工程技巧。

接下來由各個不同團隊來分享不論是擔任 TECH FRESH 的心得,或是許多有 TECH FRESH 的用人主管來分享他們專案的訓練方式與負責的業務範圍。

LINE 實習經驗分享 / Wayne Wu

第二位上場的是來自於台大資工系大四同時也是目前在 LINE 實習的同學 Wayne Wu ,他來分享從七月到現在剛好滿三個月的實習心得。 首先身為學生,在專題分工的習慣上常常有「責任歸屬」不均的狀況,「溝通」不順暢與「流程」不清楚的問題。但是來 LINE 實習的時候往往不會有這樣問題,透過有經驗的 Mentor 細心的帶領,並且在實習一個月後有了處理新專案的機會,讓講者在學習上更有自主性與積極性。

同時間講者也分享了,在 LINE 實習的時候感受到團隊內對於文件的高度要求。清楚的文件帶領的新手快速入門,並且 Mentor 也會要求處理過的同學試著紀錄下所有的經驗的學習機會。透過了定期內部讀書會,提高了學習的動力與技術力,並且透過經常性的溝通確保團隊內的同仁都是在共識下將專案積極推進。

跨國合作上,講者也分享了與越南工作同仁的小趣事。彼此在溝通上雖然都是透過文字,但是也讓語言能力與表達能力能不斷的提升。

最後這位同學也分享了他平時就是常常在懶骨頭上工作,可以更專注地處理手上的問題。風氣很自由並且工作彈性高,讓工作就像是另一場有趣的學習。

Migrating to JUnit 5 / Joanna Hu

接下來由 LINE SHOPPING 的工程師 Joanna 來分享 migrating 到 junit5 的經驗分享。首先先釐清幾個名詞:

  • JUnit Jupiter: 支援 JUnit 5 test case 的新測試框架。
  • JUnit Vintage: 則是可以跑 JUnit3 與 JUnit4 架構語法的測試引擎。
  • JUnit Platform: 則是最底層用來在 JVM 下啟動測試架構。

為何整合到 JUnit5

  • 高度支援 IDE 與 build tool
  • 容易從 JUnit4 移植
  • 並且有相關新功能

JUnit5 新功能

  • Nested testing

支援 Nested testing 讓測試檔案的架構變得更有系統,也可以分類成各種功能來跑不同規模的測試。

  • Display Name

支援 Friendly Display Name ,可以讓測試執行的時候不僅僅是顯示測試的名稱。而是更有意義的測試名字。

  • Parameterized tests

透過不同的參數輸入來不斷地重複執行同一個 test function 。

  • Support multiple runners

How to migrating to JUnit5

接下來也是本次演講的重點,如果你是 JUnit4 的開發者,如何來 Migrating 到 JUnit5 呢?

  • 升級你的 Maven 到 3.63 以上
  • 升級你的 Gradle 到 4.6 以上

  • 先寫一些使用 JUnit5 的測試案例

  • 移植舊有 JUnit4 的測試
    • Package 有更換過就可以繼續使用
  • 根據 JUnit4 Rule 測試,改寫成 JUnit5 Extension
    • 透過換名字方式即可,也可以使用 IntelliJ IDEA 的功能來置換

參考文件:

  • JUnit 5 website: https://junit.org/junit5/
  • 7 Reasons to Consider JUnit 5: https://dzone.com/articles/7-reasons-to-consider-junit-5
  • Migrating from JUnit 4 to JUnit 5: https://blog.jetbrains.com/idea/2020/08/migrating-from-junit-4-to-junit-5/

Introduction to AssertJ / Andy Chen

接下來一樣也是由 LINE SHOPPING 工程師 Andy 帶來介紹 AssertJ 。 透過 assert 是拿來檢查相關數值或是測試的警告訊息。 而 AssertJ 有著比較好閱讀的優點,接下來會詳細介紹:

Fluent Expression

透過 AssertJ 可以顯示更像口語化的方式,

assertThat(actual).isEqualTo(expected);

除了可以容易閱讀,也更容易表達。 也可以透過 AssertJ 來減少 getter 與 temprorary variable 。也可以透過 collection asserting 來一次做多種數值的檢查。

Better Error Description

透過 AssertJ 可以有更多的 expression 來表達正確的想法,可以避免過多的單獨 assert 反而容易有遺漏。

並且可以透過 soft assertion 讓錯誤發生的時候不會第一個就跳出,可以一次檢查許多個地方。

並且有更多的相關功能 Expression Assertions , Optional Assertions 更清楚與 Completable Future Assertions 都可以使用。

總結

  • AssertJ 可以更容易來陳述與表達 test case 原本的意思(語意上)
  • AssertJ 可以更清楚表達 test failure 的狀況
  • 更少的 code 可以有更精準的表達

參考文件:

活動小結

感謝 TWJUG 的熱情參與,在 LINE 辦公室舉辦的活動獲得相當高的報到率。 LINE 對於開源技術社群持續的耕耘與支持,並且即將在 2020/11/19 舉辦的 JCConf 擔任黃金級的贊助,當天也有相關的攤位與開發者們相見歡。 熱愛 Java 的開發者,大家到時候見!

立即加入「LINE開發者官方社群」官方帳號,就能收到第一手Meetup活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE開發者官方社群」官方帳號ID:@line_tw_dev

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看:


Buy Me A Coffee

Evan

Attitude is everything