Java 单元测试API?
我有一个类和一个方法,看起来像这样Java 单元测试API?,java,unit-testing,mockito,Java,Unit Testing,Mockito,我有一个类和一个方法,看起来像这样 class A { private RetryLogic logic; private Service serviceClient; public A(){ logic = new RetryLogic(); serviceClient = new Service(); } public Response methodA() { Request request = new Request(); servi
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异常并检查重试是否有效的测试来测试重试逻辑是否合适(或者应该考虑到这一点)
RetryLogic基本上是另一个不属于我的包。您能测试
Apache Commons HttpClient的setConnectionTimeout
吗?或者您的JDBC客户端的setAutoCommit
?我不会的
如果您像信任其他依赖项一样信任该服务
,那么测试它是没有意义的。试想一下,有1000名开发人员在使用服务,他们都在测试重试功能。。。这有点浪费时间,不是吗?当然,您可以在JUnit中这样注释测试:@test(expected=AnyKindOfException.class)是的,我可以尝试测试它,但我的问题是,我是否真的应该关心测试它,因为它是一个包中的方法,不属于我。这取决于您对包提供商的信任程度,以及如果在生产中发现问题,会有多大的风险。你的工作是向支付测试费用的人推荐是否进行测试。