java - 如何使用 Mockito 测试网络错误?

标签 java unit-testing junit mockito

我编写了一个从互联网获取数据的程序。

public class GetDataService {

  public List<String> getData()  {
    List<String> lines = new ArrayList<>();
    try {
    URL url = new URL("http://worldtimeapi.org/api/ip.txt");
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
    String line;
    while ((line = bufferedReader.readLine()) != null) {
      String a = line;
      lines.add(a);
      }
      bufferedReader.close();

    } catch (IOException ex) {
      throw new RuntimeException("Can not making the request to the URL.");
    }
    return lines;
  }
}

现在我想使用 Mockito 测试网络错误。我该怎么做?另外,我的代码好吗?有什么改进建议吗?

最佳答案

你可以这样做:

when(mockUsingNetwork.doSomeNetworkAction()).thenReturn(new SomeNetworkError());

一些网络错误,例如套接字的 ConnectException

对于你的情况,它会是这样的:

    URL url = Mockito.mock(URL.class);
    when(url.openConnection()).thenThrow(new IOException());

关于java - 如何使用 Mockito 测试网络错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771144/

相关文章:

java - 在不关闭 IDE 的情况下保存/刷新 Eclipse 状态

python - pytest:不同目录下的源文件和测试文件

unit-testing - 即使我的代码覆盖率为 100%,我的代码仍可能包含哪些类型的错误?

c# - 如何在 mvc3 中使用 razor 语法测试 View ?

java - 我可以在一种测试方法中测试多个抛出的异常吗?

java - Java 编译器是否优化了循环局部变量的创建?

java - 如何强制子类在java中实现一些方法?

java - 黑莓 TableView

grails - 对访问域对象Grails的属性感到困惑

java - 如何模拟模拟对象的方法调用?