繁体   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