2022-07-18

[Java] Cucumber 問題紀錄

使用 cucumber 一陣子了, 在 Java 可以建立兩種測試類,一種是傳統 Java Class,另外一種是 lambda 語法的 Class 1. 使用傳統 Java Class,若有出現兩個以上的 When 子句方法,則宣告在 Class 中的屬性會被重置 舉例:
 

public class {name} Defs {
	
	private List list = new ArrayList<>();

	@Given (...) public void method_1() {...}

	@When(...) public void method_2() {...}

	@Then(...) public void method_3() {...}

	@Given (...) public void method_4() {...} // 從這裡開始 list 會等於 null 

	@When(...) public void method_5() {...}

	@Then(...) public void method_6() {...}

}




解決方式:於 class 中宣告屬性為 static 

 

public class {name}Defs {
	
	private static List list = new ArrayList<>();

}



2. 使用 lambda Class, 無法使用 Mockito 套件, @Mockbean, @Mock 註解皆失效
解決方式:尚無,不過有一種歪路,因為我使用 Mockito 都是拿來模擬DB,
所以如果使用 H2 就可以完成測試,就不需要使用 Mockito 了,只是那就不算『單元』測試。

結論:
目前就還是先維持傳統 Class 方便使用 Mockito。

沒有留言:

[Java] Cucumber 問題紀錄

使用 cucumber 一陣子了, 在 Java 可以建立兩種測試類,一種是傳統 Java Class,另外一種是 lambda 語法的 Class 1. 使用傳統 Java Class,若有出現兩個以上的 When 子句方法,則宣告在 Class 中的屬性會被重置 舉例: ...