Project Lombok
通過注解來減少 Java 中的重復性代碼,比如 getter 和 setter、非空檢查、生成 Builder 等。
val - 終級解決方案!簡化 final 局部變量定義。
@NonNull - 或者:了解我是怎樣停止擔心并愛上 NullPointerException 的。
@Cleanup - 怎么資源管理:方便而安全地調(diào)用 close() 方法。
@Getter / @Setter - 不再需要寫像 public int getFoo() {return foo;} 這樣的代碼。
@ToString - 不用啟動調(diào)試器就能觀察字段值:讓 Lombok 為你生成 toString!
@EqualsAndHashCode - 讓等值比較變得容易:在項目中由字段實現(xiàn) hashCode 和 equals。
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor - 定制構造器:生成無參構造函數(shù),對每個 final/非空 字段產(chǎn)生構造器,對每個字段產(chǎn)生構造器。
@Data - 它合并所有注解:相當于對所有字段應用 @[email protected]@Getter,并對所有非 final 字段應用 @Setter,以及應用 @RequiredArgsConstructor!
@Value - 簡單創(chuàng)意不可變類。
@Builder - … 一切都很簡單:簡單直接地創(chuàng)建對象的 API!
@SneakyThrows - 大膽的拋出以前不能輕易拋出的異常!
@Synchronized - 正確的同步:不要暴露你的鎖。
@Getter(lazy=true) 懶加載是種美德!
@Log - 艦長日志,星歷 24435.7: “這是什么行?”
GitHub,網(wǎng)站

Simple Logging Facade for Java
Simple Logging Facade for Java(SLF4J)是對各種日志框架(比如 java.util.logging、logback、log4j 等)的簡單門面或者抽象,它讓用戶可以在開發(fā)時使用喜歡的日志框架。
簡單地說,庫和其它嵌入式組件考慮使用 SLF4J 來記錄日志,因為它們不能把自己選用的日志框架強加給用戶。另一方面,獨立的應用程序就不必在意是否使用 SLF4J。獨立的應用程序可以直接使用自己選用的日志框架。在使用 logback 的時候會有一個爭議,因為它是使用 SLF4J 來提供日志 API 的。
網(wǎng)站,GitHub,F(xiàn)AQ
JUnitParams
參數(shù)化測試
@Test@Parameters({"17, false", "22, true" })public void personIsAdult(int age, boolean valid) throws Exception { assertThat(new Person(age).isAdult(), is(valid));}
與標準 JUnit Parametrised 運行器的主要區(qū)別:
更明確 - 參數(shù)是測試方法的參數(shù),而不是類中定義的字段
更少代碼 - 不需要通過構造器來設置參數(shù)
可以在一個類里混合參數(shù)化或非參數(shù)化的方法
參數(shù)可以由 CSV 文本提供,也可以由專門的參數(shù)提供類提供
參數(shù)提供類可以有任意多個參數(shù)提供方法,所以你可以對不同的情況分組
可以由測試方法提供參數(shù)(而不是其它類或靜態(tài)方法)
可以在 IDE 中看到實際的參數(shù)值(JUnit 的 Parametrised 中只有連續(xù)編號的參數(shù))
網(wǎng)站,GitHub,快速開始

Mockito
Java 中不錯的 mock 框架
//You can mock concrete classes, not just interfaces