如何模拟测试失败

时间:2012-04-18 19:42:30

标签: java mocking

我正在为Web服务API编写适配器。适配器同步文件与web服务器。我想测试的一件事是,如果在我的适配器同步时同步失败,下一次同步仍然可以获取所有正确的文件。

我的问题是如何在与真实网络服务交互时模拟故障?例如,如果Web服务API包含:

class WebService {
    List<String> getFileNamesToSync() {
       ......
    }

    File getFile(String name) throws SomeException {
        <talks to the web service API>;
    }
}

我的适配器类:

class MyAdapter {
    void MyFunction() {
        List<String> names = webService.getFileNamesToSync();
        for(String n : names) {
            File file = webService.getFile(n);
            .......
        }
    }
}

如何模拟第三次调用getFile会因异常而失败?

我知道我可以通过Mock实现这一点,但我仍然希望我的其他调用getFile从Web服务返回真实数据?这是我用模拟可以实现的吗?或者我必须编写自己的Mock类?

1 个答案:

答案 0 :(得分:1)

如果您使用Mockito,您可以创建一个Answer类来保持调用计数器,在大多数调用中调用真实类,但是当计数器达到您的幻数时,您将抛出异常。