[英]Junit for CompletableFuture.runAsync()
我想說感謝你們每一位與我們分享你們的知識和時間。 在這里,我很想知道我們如何為在 CompletableFuture.runAsync() 中編寫的業務邏輯編寫 junit 測試用例,例如
public class Loan{
public Transaction writeIntoCassandra(Transaction transaction){
private startTime = System.currentTimeMillis();
CompletableFuture.runAsync(()-> {
try{
writeIntoCassandraTable(transaction);
}
catch(JsonConversionException e){
}
});
CompletableFuture.runAsync(()-> {
try{
writeIntoCassandraTable2(transaction);
}
catch(JsonConversionException e){
}
});
return transaction;
}
}
我在下面寫 junit 上面實現的測試用例
@InjectMocks
private Loan loan;
public void writeIntoCassendraTest(){
String jsonTransaction = "";
ObjectMapper objectMapper = new ObjectMapper();
Transaction transaction = objectMapper.readValue(jsonTransaction, Transaction.class);
loan.writeIntoCassendra(transaction);
//assertThat();
}
在這里,當我運行 junits 時,它沒有執行在“CompletableFuture.runAsync(()-> {”之后編寫的代碼,即私有方法 writeIntoCassandraTable(transaction) 和 writeIntoCassandraTable2(transaction) 沒有被執行。我在 try 塊中保留了斷點但是控制在這一點上沒有停止。這導致代碼覆蓋率低。幫助我理解為什么它沒有被執行以及如何修復它。如果您需要更清晰或更詳細的信息,請告訴我。
我建議在您的原始方法中使用supplyAsync
切換runAsync
。 然后,從supplyAsync
方法返回一些東西。 至於要返回什么,您可能需要使用 Mockito 或其他一些等效的 mocking 庫。 如果不是那樣,也許您可以使用一些虛擬值/對象? 從那里開始,只需做出您的斷言,您就應該有一個有效的單元測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.