JAVA-12032 Move Mockito ebook articles code to common module - mockito-simple- Delete mockito-3 since it had only 1 article which was moved to mockito-simple
This commit is contained in:
parent
3860716e20
commit
24d4feb541
|
@ -1,7 +1,6 @@
|
||||||
### Relevant Articles:
|
### Relevant Articles:
|
||||||
- [A Guide to JUnit 5 Extensions](https://www.baeldung.com/junit-5-extensions)
|
- [A Guide to JUnit 5 Extensions](https://www.baeldung.com/junit-5-extensions)
|
||||||
- [Inject Parameters into JUnit Jupiter Unit Tests](https://www.baeldung.com/junit-5-parameters)
|
- [Inject Parameters into JUnit Jupiter Unit Tests](https://www.baeldung.com/junit-5-parameters)
|
||||||
- [Mockito and JUnit 5 – Using ExtendWith](https://www.baeldung.com/mockito-junit-5-extension)
|
|
||||||
- [The Order of Tests in JUnit](https://www.baeldung.com/junit-5-test-order)
|
- [The Order of Tests in JUnit](https://www.baeldung.com/junit-5-test-order)
|
||||||
- [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java)
|
- [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java)
|
||||||
- [Testing an Abstract Class With JUnit](https://www.baeldung.com/junit-test-abstract-class)
|
- [Testing an Abstract Class With JUnit](https://www.baeldung.com/junit-test-abstract-class)
|
||||||
|
|
|
@ -6,7 +6,5 @@
|
||||||
- [Mockito and Fluent APIs](https://www.baeldung.com/mockito-fluent-apis)
|
- [Mockito and Fluent APIs](https://www.baeldung.com/mockito-fluent-apis)
|
||||||
- [Mocking the ObjectMapper readValue() Method](https://www.baeldung.com/mockito-mock-jackson-read-value)
|
- [Mocking the ObjectMapper readValue() Method](https://www.baeldung.com/mockito-mock-jackson-read-value)
|
||||||
- [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers)
|
- [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers)
|
||||||
- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy)
|
|
||||||
- [Using Mockito ArgumentCaptor](https://www.baeldung.com/mockito-argumentcaptor)
|
|
||||||
- [Difference Between when() and doXxx() Methods in Mockito](https://www.baeldung.com/java-mockito-when-vs-do)
|
- [Difference Between when() and doXxx() Methods in Mockito](https://www.baeldung.com/java-mockito-when-vs-do)
|
||||||
- [Overview of Mockito MockSettings](https://www.baeldung.com/mockito-mocksettings)
|
- [Overview of Mockito MockSettings](https://www.baeldung.com/mockito-mocksettings)
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
/target/
|
|
||||||
/.settings/
|
|
||||||
/.classpath
|
|
||||||
/.project
|
|
|
@ -1,3 +0,0 @@
|
||||||
### Relevant Articles:
|
|
||||||
|
|
||||||
- [Mocking Static Methods With Mockito](https://www.baeldung.com/mockito-mock-static-methods)
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>mockito-3</artifactId>
|
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
|
||||||
<name>mockito-3</name>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
|
|
||||||
<parent>
|
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>testing-modules</artifactId>
|
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.mockito</groupId>
|
|
||||||
<artifactId>mockito-inline</artifactId>
|
|
||||||
<version>${mockito.version}</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<configuration>
|
|
||||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
|
||||||
<encoder>
|
|
||||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
|
|
||||||
</pattern>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<root level="INFO">
|
|
||||||
<appender-ref ref="STDOUT" />
|
|
||||||
</root>
|
|
||||||
</configuration>
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
### Mockito Articles that are also part of the e-book
|
||||||
|
|
||||||
|
This module contains articles about Mockito that are also part of an Ebook.
|
||||||
|
|
||||||
|
## Relevant articles:
|
||||||
|
|
||||||
|
- [Getting Started with Mockito @Mock, @Spy, @Captor and @InjectMocks](https://www.baeldung.com/mockito-annotations)
|
||||||
|
- [Mockito When/Then Cookbook](https://www.baeldung.com/mockito-behavior)
|
||||||
|
- [Mockito’s Mock Methods](https://www.baeldung.com/mockito-mock-methods)
|
||||||
|
- [Mockito Verify Cookbook](https://www.baeldung.com/mockito-verify)
|
||||||
|
- [Mockito ArgumentMatchers](https://www.baeldung.com/mockito-argument-matchers)
|
||||||
|
- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy)
|
||||||
|
- [Using Mockito ArgumentCaptor](https://www.baeldung.com/mockito-argumentcaptor)
|
||||||
|
- [Mocking Void Methods with Mockito](https://www.baeldung.com/mockito-void-methods)
|
||||||
|
- [Mocking Static Methods With Mockito](https://www.baeldung.com/mockito-mock-static-methods)
|
||||||
|
- [Mock Final Classes and Methods with Mockito](https://www.baeldung.com/mockito-final)
|
||||||
|
- [Mocking Exception Throwing using Mockito](https://www.baeldung.com/mockito-exceptions)
|
||||||
|
- [Mockito and JUnit 5 – Using ExtendWith](https://www.baeldung.com/mockito-junit-5-extension)
|
||||||
|
|
||||||
|
|
||||||
|
### NOTE:
|
||||||
|
|
||||||
|
Since this is a module tied to an e-book, it should **not** be moved or used to store the code for any further article.
|
|
@ -0,0 +1,88 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>mockito-simple</artifactId>
|
||||||
|
<name>mockito-simple</name>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>parent-java</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<relativePath>../../parent-java</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-web</artifactId>
|
||||||
|
<version>${spring-framework.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-core</artifactId>
|
||||||
|
<version>${spring-framework.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-context</artifactId>
|
||||||
|
<version>${spring-framework.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.data</groupId>
|
||||||
|
<artifactId>spring-data-jpa</artifactId>
|
||||||
|
<version>${spring-data.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.persistence</groupId>
|
||||||
|
<artifactId>javax.persistence</artifactId>
|
||||||
|
<version>${javax.persistence.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- utils -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>${commons-lang3.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- test scoped -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-junit-jupiter</artifactId>
|
||||||
|
<version>${mockito.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>mockito-simple</finalName>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<spring-boot.version>2.0.4.RELEASE</spring-boot.version>
|
||||||
|
<spring-framework.version>5.0.8.RELEASE</spring-framework.version>
|
||||||
|
<spring-data.version>2.0.9.RELEASE</spring-data.version>
|
||||||
|
<!-- testing -->
|
||||||
|
<powermock.version>2.0.2</powermock.version>
|
||||||
|
<javax.persistence.version>2.1.1</javax.persistence.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
|
@ -4,12 +4,5 @@
|
||||||
|
|
||||||
|
|
||||||
### Relevant Articles:
|
### Relevant Articles:
|
||||||
- [Mockito Verify Cookbook](https://www.baeldung.com/mockito-verify)
|
|
||||||
- [Mockito When/Then Cookbook](https://www.baeldung.com/mockito-behavior)
|
|
||||||
- [Getting Started with Mockito @Mock, @Spy, @Captor and @InjectMocks](https://www.baeldung.com/mockito-annotations)
|
|
||||||
- [Mockito’s Mock Methods](https://www.baeldung.com/mockito-mock-methods)
|
|
||||||
- [Mocking Exception Throwing using Mockito](https://www.baeldung.com/mockito-exceptions)
|
|
||||||
- [Mocking Void Methods with Mockito](https://www.baeldung.com/mockito-void-methods)
|
|
||||||
- [Mock Final Classes and Methods with Mockito](https://www.baeldung.com/mockito-final)
|
|
||||||
- [Testing Callbacks with Mockito](https://www.baeldung.com/mockito-callbacks)
|
- [Testing Callbacks with Mockito](https://www.baeldung.com/mockito-callbacks)
|
||||||
- [Quick Guide to BDDMockito](https://www.baeldung.com/bdd-mockito)
|
- [Quick Guide to BDDMockito](https://www.baeldung.com/bdd-mockito)
|
||||||
|
|
|
@ -1,114 +0,0 @@
|
||||||
package com.baeldung.mockito;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.mockito.*;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
//@RunWith(MockitoJUnitRunner.class)
|
|
||||||
public class MockitoAnnotationIntegrationTest {
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private List<String> mockedList;
|
|
||||||
|
|
||||||
@Spy
|
|
||||||
private List<String> spiedList = new ArrayList<>();
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void init() {
|
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
// tests
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenNotUseMockAnnotation_thenCorrect() {
|
|
||||||
final List<String> mockList = Mockito.mock(List.class);
|
|
||||||
mockList.add("one");
|
|
||||||
Mockito.verify(mockList).add("one");
|
|
||||||
assertEquals(0, mockList.size());
|
|
||||||
|
|
||||||
Mockito.when(mockList.size()).thenReturn(100);
|
|
||||||
assertEquals(100, mockList.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenUseMockAnnotation_thenMockIsInjected() {
|
|
||||||
mockedList.add("one");
|
|
||||||
Mockito.verify(mockedList).add("one");
|
|
||||||
assertEquals(0, mockedList.size());
|
|
||||||
|
|
||||||
Mockito.when(mockedList.size()).thenReturn(100);
|
|
||||||
assertEquals(100, mockedList.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenNotUseSpyAnnotation_thenCorrect() {
|
|
||||||
final List<String> spyList = Mockito.spy(new ArrayList<String>());
|
|
||||||
spyList.add("one");
|
|
||||||
spyList.add("two");
|
|
||||||
|
|
||||||
Mockito.verify(spyList).add("one");
|
|
||||||
Mockito.verify(spyList).add("two");
|
|
||||||
|
|
||||||
assertEquals(2, spyList.size());
|
|
||||||
|
|
||||||
Mockito.doReturn(100).when(spyList).size();
|
|
||||||
assertEquals(100, spyList.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenUseSpyAnnotation_thenSpyIsInjectedCorrectly() {
|
|
||||||
spiedList.add("one");
|
|
||||||
spiedList.add("two");
|
|
||||||
|
|
||||||
Mockito.verify(spiedList).add("one");
|
|
||||||
Mockito.verify(spiedList).add("two");
|
|
||||||
|
|
||||||
assertEquals(2, spiedList.size());
|
|
||||||
|
|
||||||
Mockito.doReturn(100).when(spiedList).size();
|
|
||||||
assertEquals(100, spiedList.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenNotUseCaptorAnnotation_thenCorrect() {
|
|
||||||
final List<String> mockList = Mockito.mock(List.class);
|
|
||||||
final ArgumentCaptor<String> arg = ArgumentCaptor.forClass(String.class);
|
|
||||||
mockList.add("one");
|
|
||||||
Mockito.verify(mockList).add(arg.capture());
|
|
||||||
|
|
||||||
assertEquals("one", arg.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Captor
|
|
||||||
private
|
|
||||||
ArgumentCaptor<String> argCaptor;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenUseCaptorAnnotation_thenTheSam() {
|
|
||||||
mockedList.add("one");
|
|
||||||
Mockito.verify(mockedList).add(argCaptor.capture());
|
|
||||||
|
|
||||||
assertEquals("one", argCaptor.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private Map<String, String> wordMap;
|
|
||||||
|
|
||||||
@InjectMocks
|
|
||||||
private MyDictionary dic = new MyDictionary();
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenUseInjectMocksAnnotation_thenCorrect() {
|
|
||||||
Mockito.when(wordMap.get("aWord")).thenReturn("aMeaning");
|
|
||||||
|
|
||||||
assertEquals("aMeaning", dic.getMeaning("aWord"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,93 +0,0 @@
|
||||||
package com.baeldung.mockito;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.mockito.Mockito;
|
|
||||||
|
|
||||||
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
|
||||||
import static org.hamcrest.Matchers.is;
|
|
||||||
import static org.junit.Assert.assertThat;
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
|
|
||||||
public class MockitoConfigExamplesIntegrationTest {
|
|
||||||
|
|
||||||
// tests
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenMockReturnBehaviorIsConfigured_thenBehaviorIsVerified() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
when(listMock.add(anyString())).thenReturn(false);
|
|
||||||
|
|
||||||
final boolean added = listMock.add(randomAlphabetic(6));
|
|
||||||
assertThat(added, is(false));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenMockReturnBehaviorIsConfigured2_thenBehaviorIsVerified() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
doReturn(false).when(listMock).add(anyString());
|
|
||||||
|
|
||||||
final boolean added = listMock.add(randomAlphabetic(6));
|
|
||||||
assertThat(added, is(false));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = IllegalStateException.class)
|
|
||||||
public final void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
when(listMock.add(anyString())).thenThrow(IllegalStateException.class);
|
|
||||||
|
|
||||||
listMock.add(randomAlphabetic(6));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NullPointerException.class)
|
|
||||||
public final void whenMethodHasNoReturnType_whenConfiguringBehaviorOfMethod_thenPossible() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
doThrow(NullPointerException.class).when(listMock).clear();
|
|
||||||
|
|
||||||
listMock.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingOnlyOnce_thenNoExceptionIsThrown() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
when(listMock.add(anyString())).thenReturn(false).thenThrow(IllegalStateException.class);
|
|
||||||
|
|
||||||
listMock.add(randomAlphabetic(6));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = IllegalStateException.class)
|
|
||||||
public final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingTwice_thenExceptionIsThrown() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
when(listMock.add(anyString())).thenReturn(false).thenThrow(IllegalStateException.class);
|
|
||||||
|
|
||||||
listMock.add(randomAlphabetic(6));
|
|
||||||
listMock.add(randomAlphabetic(6));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenMockMethodCallIsConfiguredToCallTheRealMethod_thenRealMethodIsCalled() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
when(listMock.size()).thenCallRealMethod();
|
|
||||||
|
|
||||||
assertThat(listMock.size(), equalTo(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenMockMethodCallIsConfiguredWithCustomAnswer_thenRealMethodIsCalled() {
|
|
||||||
final MyList listMock = Mockito.mock(MyList.class);
|
|
||||||
doAnswer(invocation -> "Always the same").when(listMock).get(anyInt());
|
|
||||||
|
|
||||||
final String element = listMock.get(1);
|
|
||||||
assertThat(element, is(equalTo("Always the same")));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NullPointerException.class)
|
|
||||||
public final void givenSpy_whenConfiguringBehaviorOfSpy_thenCorrectlyConfigured() {
|
|
||||||
final MyList instance = new MyList();
|
|
||||||
final MyList spy = Mockito.spy(instance);
|
|
||||||
|
|
||||||
doThrow(NullPointerException.class).when(spy).size();
|
|
||||||
spy.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
package com.baeldung.mockito;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.mockito.Mockito;
|
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
|
|
||||||
public class MockitoExceptionIntegrationTest {
|
|
||||||
|
|
||||||
@Test(expected = NullPointerException.class)
|
|
||||||
public void whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() {
|
|
||||||
MyDictionary dictMock = mock(MyDictionary.class);
|
|
||||||
when(dictMock.getMeaning(anyString())).thenThrow(NullPointerException.class);
|
|
||||||
|
|
||||||
dictMock.getMeaning("word");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = IllegalStateException.class)
|
|
||||||
public void whenConfigVoidRetunMethodToThrowEx_thenExIsThrown() {
|
|
||||||
MyDictionary dictMock = mock(MyDictionary.class);
|
|
||||||
doThrow(IllegalStateException.class).when(dictMock)
|
|
||||||
.add(anyString(), anyString());
|
|
||||||
|
|
||||||
dictMock.add("word", "meaning");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NullPointerException.class)
|
|
||||||
public void whenConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() {
|
|
||||||
MyDictionary dictMock = mock(MyDictionary.class);
|
|
||||||
when(dictMock.getMeaning(anyString())).thenThrow(new NullPointerException("Error occurred"));
|
|
||||||
|
|
||||||
dictMock.getMeaning("word");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = IllegalStateException.class)
|
|
||||||
public void whenConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() {
|
|
||||||
MyDictionary dictMock = mock(MyDictionary.class);
|
|
||||||
doThrow(new IllegalStateException("Error occurred")).when(dictMock)
|
|
||||||
.add(anyString(), anyString());
|
|
||||||
|
|
||||||
dictMock.add("word", "meaning");
|
|
||||||
}
|
|
||||||
|
|
||||||
// =====
|
|
||||||
|
|
||||||
@Test(expected = NullPointerException.class)
|
|
||||||
public void givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() {
|
|
||||||
MyDictionary dict = new MyDictionary();
|
|
||||||
MyDictionary spy = Mockito.spy(dict);
|
|
||||||
|
|
||||||
when(spy.getMeaning(anyString())).thenThrow(NullPointerException.class);
|
|
||||||
spy.getMeaning("word");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,116 +0,0 @@
|
||||||
package com.baeldung.mockito;
|
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.mockito.ArgumentCaptor;
|
|
||||||
import org.mockito.InOrder;
|
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.exceptions.verification.NoInteractionsWanted;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.hasItem;
|
|
||||||
import static org.junit.Assert.assertThat;
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
|
|
||||||
public class MockitoVerifyExamplesIntegrationTest {
|
|
||||||
|
|
||||||
// tests
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void givenInteractionWithMockOccurred_whenVerifyingInteraction_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.size();
|
|
||||||
verify(mockedList).size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void givenOneInteractionWithMockOccurred_whenVerifyingNumberOfInteractions_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.size();
|
|
||||||
verify(mockedList, times(1)).size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void givenNoInteractionWithMockOccurred_whenVerifyingInteractions_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
verifyNoInteractions(mockedList);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void givenNoInteractionWithMethodOfMockOccurred_whenVerifyingInteractions_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
verify(mockedList, times(0)).size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NoInteractionsWanted.class)
|
|
||||||
public final void givenUnverifiedInteraction_whenVerifyingNoUnexpectedInteractions_thenFail() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.size();
|
|
||||||
mockedList.clear();
|
|
||||||
|
|
||||||
verify(mockedList).size();
|
|
||||||
verifyNoMoreInteractions(mockedList);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenVerifyingOrderOfInteractions_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.size();
|
|
||||||
mockedList.add("a parameter");
|
|
||||||
mockedList.clear();
|
|
||||||
|
|
||||||
final InOrder inOrder = Mockito.inOrder(mockedList);
|
|
||||||
inOrder.verify(mockedList).size();
|
|
||||||
inOrder.verify(mockedList).add("a parameter");
|
|
||||||
inOrder.verify(mockedList).clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenVerifyingAnInteractionHasNotOccurred_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.size();
|
|
||||||
|
|
||||||
verify(mockedList, never()).clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenVerifyingAnInteractionHasOccurredAtLeastOnce_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.clear();
|
|
||||||
mockedList.clear();
|
|
||||||
mockedList.clear();
|
|
||||||
|
|
||||||
verify(mockedList, atLeast(1)).clear();
|
|
||||||
verify(mockedList, atMost(10)).clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
// with arguments
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenVerifyingAnInteractionWithExactArgument_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.add("test");
|
|
||||||
|
|
||||||
verify(mockedList).add("test");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenVerifyingAnInteractionWithAnyArgument_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.add("test");
|
|
||||||
|
|
||||||
verify(mockedList).add(anyString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public final void whenVerifyingAnInteractionWithArgumentCapture_thenCorrect() {
|
|
||||||
final List<String> mockedList = mock(MyList.class);
|
|
||||||
mockedList.addAll(Lists.<String>newArrayList("someElement"));
|
|
||||||
final ArgumentCaptor<List> argumentCaptor = ArgumentCaptor.forClass(List.class);
|
|
||||||
verify(mockedList).addAll(argumentCaptor.capture());
|
|
||||||
final List<String> capturedArgument = argumentCaptor.<List<String>>getValue();
|
|
||||||
assertThat(capturedArgument, hasItem("someElement"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -4,4 +4,3 @@ This module contains articles about Spring with Mockito
|
||||||
|
|
||||||
### Relevant Articles:
|
### Relevant Articles:
|
||||||
- [Injecting Mockito Mocks into Spring Beans](https://www.baeldung.com/injecting-mocks-in-spring)
|
- [Injecting Mockito Mocks into Spring Beans](https://www.baeldung.com/injecting-mocks-in-spring)
|
||||||
- [Mockito ArgumentMatchers](https://www.baeldung.com/mockito-argument-matchers)
|
|
||||||
|
|
Loading…
Reference in New Issue