簡體   English   中英

如何測試僅使用第三方庫中的操作的Callable方法?

[英]How to test Callable method which uses only operations from third-party library?

Callable類的call()方法中,我調用了第三方庫來完成與iText相關的工作。 現在,我打算測試這種public方法。 但是,我對應該做什么感到困惑。 我是否應該測試此類,因為它會進行第三方相關的操作? 如果我應該測試acc。 測試驅動方法,如何使用第三方操作來測試此Callable方法?

class Foo implements Callable<String> {
    @Override
    public String call(){
        PdfReader pdfReader = new PdfReader(filename);
        // do iText, external, library related jobs

        return (buffer);
    }
}

無需初始化內部的PdfReader call ,而是PdfReader創建一個實例字段,然后通過傳遞給構造函數參數的參數對其進行初始化。

private PdfReader pdfReader;
public Foo(PdfReader pdfReader) {
    this.pdfReader = pdfReader;
}

然后,您可以模擬PdfReader並將模擬的對象傳遞給構造函數。 在模擬上設置您的期望,並在call后驗證它們。

他們最好不要對第三方對象使用測試雙打(例如模擬)。 最好為它定義一個接口,您可以使用測試雙精度以TDD方式針對該接口進行編碼,然后在實際上使用第三方庫並且可以為其創建集成測試的薄層中實現此接口。

當然,您需要確保完全需要雙重測試,這意味着不可能在測試中使用實際的第三方庫(例如,通過閱讀真實的PDF)。 當然,在閱讀 PDF的情況下,它不會對其他測試或同一測試的后續運行產生任何副作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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