簡體   English   中英

Junit 對於 CompletableFuture.runAsync()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM