1.概述

在这个快速教程中,我们将重点介绍如何配置一个方法调用来使用Mockito抛出异常。

想了解更多关于图书馆的信息,请访问我们的5系列

下面是一个简单的字典类,我们将在下面的例子中使用:

class MyDictionary {private Map wordMap = new HashMap<>();public void add(String word, String meaning) {wordMap。把(词,意义);} public String getMeaning(String word) {return wordMap.get(word);}}

进一步阅读:

断言异常在JUnit 4和5中被抛出

看看如何测试是否使用JUnit抛出了异常。

Mockito的Java 8特性

概述Java 8在Mockito框架的支持,包括流和默认接口方法

AssertJ异常断言

学习如何使用AssertJ对异常执行断言。

2.非无效返回类型

首先,如果我们的方法返回类型不是无效我们可以使用当().thenThrow ():

@Test(expected = NullPointerException.class) public void whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() {MyDictionary dictMock = mock(MyDictionary.class);当(dictMock.getMeaning (anyString ())) .thenThrow (NullPointerException.class);dictMock.getMeaning(“单词”);}

注意,我们配置了getMeaning ()方法——该方法返回类型的值字符串- 扔一个NullPointerException当调用。

3.无效返回类型

如果我们的方法返回空白,我们将使用doThrow ():

@Test(expected = IllegalStateException.class) public void whenConfigVoidRetunMethodToThrowEx_thenExIsThrown() {MyDictionary dictMock = mock(MyDictionary.class);doThrow(IllegalStateException.class)当(dictMock) .add(anyString(), anyString());dictMock。添加(“词”,“意义”);}

这里,我们配置了add ()方法——该方法返回无效——把IllegalStateException当调用。

我们不能用当().thenThrow ()无效返回编译器不允许的类型无效括号内的方法。

4.异常作为对象

金宝搏官网188be关于异常本身的配置,我们可以像前面的例子一样传递异常类,也可以将异常作为对象传递:

@Test(expected = NullPointerException.class) public void whenConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() {MyDictionary dictMock = mock(MyDictionary.class);当(dictMock.getMeaning(anyString()))) .thenThrow(new NullPointerException("Error occurred"));dictMock.getMeaning(“单词”);}

我们也可以这样做doThrow ():

@Test(expected = IllegalStateException.class) public void whenConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() {MyDictionary dictMock = mock(MyDictionary.class);doThrow(new IllegalStateException("Error occurred"))当(dictMock) .add(anyString(), anyString());dictMock。添加(“词”,“意义”);}

5.间谍

我们也可以配置间谍以与mock相同的方式抛出异常:

@Test(expected = NullPointerException.class) public void givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() {MyDictionary dictionary = new MyDictionary();MyDictionary spy = Mockito.spy(dict);当(spy.getMeaning (anyString ())) .thenThrow (NullPointerException.class);spy.getMeaning(“单词”);}

6.结论

在本文中,我们研究了如何配置方法调用以在Mockito中抛出异常。

与往常一样,可以找到完整的源代码在GitHub

通用的底部

开始使用Spring 5和Spring Boot 2,通过学习的春天课程:

>>看看这个课程
对这篇文章的评论关闭!