2016-03-12 88 views
0

我有一个类和它看起来像这样单元测试API?

class A { 
    private RetryLogic logic; 
    private Service serviceClient; 
    public A(){ 
    logic = new RetryLogic(); 
    serviceClient = new Service(); 
    } 

    public Response methodA() { 
    Request request = new Request(); 
    serviceClient.addRetryLogic(logic); 
    Responce response = serviceClient.call(request); 
    return response; 
    } 
} 

重试逻辑在这种情况下,将重试服务调用如果有喜欢的服务不可用或任何HTTP错误故障的方法。

但是如果服务被调用并抛出任何建模的异常,它将不会重试。

如果我正在为methodA编写单元测试,是否适合(或者应该担心)通过添加一个模拟HTTP异常并检查重试是否有效的测试来测试重试逻辑?

重试逻辑基本上是不属于我的不同包。

+0

当然,你可以在JUnit中这样注释测试:@Test(expected = AnyKindOfException.class) – Stefan

+0

是的,我可以尝试测试它,但我的问题是我真的应该关心测试,因为它是方法在一个不属于我的包中。 – Mandar

+1

这取决于你信任包的提供者多少,以及如果在生产中发现问题有多少风险。您的工作是建议是否对其进行测试,以及向谁付费进行测试。 –

回答

0

您会测试Apache Commons HttpClientsetConnectionTimeout吗?或者您的JDBC ClientsetAutoCommit?我不会。

如果您相信Service是因为您信任其他依赖项,那么测试它就没有意义了。试想一下,有1000名开发者使用Service,并且他们都在测试重试功能......这有点浪费时间,不是吗?