Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单元测试API?_Java_Unit Testing_Mockito - Fatal编程技术网

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)是的,我可以尝试测试它,但我的问题是,我是否真的应该关心测试它,因为它是一个包中的方法,不属于我。这取决于您对包提供商的信任程度,以及如果在生产中发现问题,会有多大的风险。你的工作是向支付测试费用的人推荐是否进行测试。