You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2018/10/08 11:39:26 UTC

[flink] branch master updated: [FLINK-10208][build] Bump mockito to 2.21.0 / powermock to 2.0.0-beta.5

This is an automated email from the ASF dual-hosted git repository.

chesnay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new a2826cc  [FLINK-10208][build] Bump mockito to 2.21.0 / powermock to 2.0.0-beta.5
a2826cc is described below

commit a2826ccded5b20374e71dc8377a119e692559647
Author: Chesnay Schepler <ch...@apache.org>
AuthorDate: Mon Oct 8 13:39:20 2018 +0200

    [FLINK-10208][build] Bump mockito to 2.21.0 / powermock to 2.0.0-beta.5
---
 .../flink/client/cli/CliFrontendSavepointTest.java |  6 +-
 .../elasticsearch/ElasticsearchSinkBaseTest.java   |  2 +-
 .../kafka/internal/KafkaConsumerThreadTest.java    | 12 ++--
 .../kafka/FlinkKafkaProducerBaseTest.java          |  2 +-
 .../kinesis/FlinkKinesisConsumerTest.java          |  2 +-
 .../kinesis/FlinkKinesisProducerTest.java          |  3 +-
 .../connectors/kinesis/proxy/KinesisProxyTest.java |  2 +-
 .../java/hadoop/mapred/HadoopInputFormatTest.java  |  6 +-
 .../java/hadoop/mapred/HadoopOutputFormatTest.java |  9 +--
 .../hadoop/mapreduce/HadoopInputFormatTest.java    |  5 +-
 .../hadoop/mapreduce/HadoopOutputFormatTest.java   | 15 ++---
 .../flink/util/MethodForwardingTestUtil.java       |  3 +-
 .../flink/formats/avro/AvroOutputFormatTest.java   |  2 +-
 .../apache/flink/cep/operator/CEPOperatorTest.java |  2 +-
 .../clusterframework/MesosResourceManagerTest.java |  2 +-
 .../test/scala/org/apache/flink/mesos/Utils.scala  |  7 +-
 .../mesos/scheduler/LaunchCoordinatorTest.scala    |  2 +-
 .../network/KvStateClientHandlerTest.java          | 11 ++--
 .../checkpoint/CheckpointStateRestoreTest.java     |  7 +-
 .../runtime/checkpoint/PendingCheckpointTest.java  |  3 +-
 .../partition/SpillableSubpartitionTest.java       |  4 +-
 .../flink/runtime/net/ConnectionUtilsTest.java     |  3 -
 .../registration/RetryingRegistrationTest.java     |  6 +-
 .../handler/legacy/TaskManagerLogHandlerTest.java  |  2 +-
 .../runtime/taskexecutor/TaskExecutorITCase.java   |  2 +-
 .../runtime/taskexecutor/TaskExecutorTest.java     |  4 +-
 .../taskexecutor/slot/TimerServiceTest.java        |  2 +-
 .../runtime/jobmanager/JobManagerITCase.scala      | 16 ++---
 .../api/operators/AbstractStreamOperatorTest.java  | 12 +++-
 .../functions/InternalWindowFunctionTest.java      |  2 +-
 .../io/BarrierBufferAlignmentLimitTest.java        |  2 +-
 .../runtime/io/BarrierBufferTestBase.java          |  8 ++-
 .../DynamicEventTimeSessionWindowsTest.java        |  2 +-
 .../DynamicProcessingTimeSessionWindowsTest.java   |  2 +-
 .../windowing/EventTimeSessionWindowsTest.java     |  2 +-
 .../ProcessingTimeSessionWindowsTest.java          |  2 +-
 .../windowing/WindowOperatorContractTest.java      |  6 +-
 .../operators/windowing/WindowOperatorTest.java    | 16 ++---
 .../streaming/runtime/tasks/StreamTaskTest.java    |  7 +-
 .../main/java/org/apache/flink/mock/Whitebox.java  | 75 ++++++++++++++++++++++
 pom.xml                                            | 28 ++++++--
 41 files changed, 205 insertions(+), 101 deletions(-)

diff --git a/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendSavepointTest.java b/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendSavepointTest.java
index 75f3b3d..3b48f86 100644
--- a/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendSavepointTest.java
+++ b/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendSavepointTest.java
@@ -47,8 +47,8 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Matchers.isNull;
 import static org.mockito.Mockito.mock;
@@ -315,7 +315,7 @@ public class CliFrontendSavepointTest extends CliFrontendTestBase {
 	private static ClusterClient<String> createClusterClient(String expectedResponse) throws Exception {
 		final ClusterClient<String> clusterClient = mock(ClusterClient.class);
 
-		when(clusterClient.triggerSavepoint(any(JobID.class), anyString()))
+		when(clusterClient.triggerSavepoint(any(JobID.class), nullable(String.class)))
 			.thenReturn(CompletableFuture.completedFuture(expectedResponse));
 
 		return clusterClient;
@@ -324,7 +324,7 @@ public class CliFrontendSavepointTest extends CliFrontendTestBase {
 	private static ClusterClient<String> createFailingClusterClient(Exception expectedException) throws Exception {
 		final ClusterClient<String> clusterClient = mock(ClusterClient.class);
 
-		when(clusterClient.triggerSavepoint(any(JobID.class), anyString()))
+		when(clusterClient.triggerSavepoint(any(JobID.class), nullable(String.class)))
 			.thenReturn(FutureUtils.completedExceptionally(expectedException));
 
 		return clusterClient;
diff --git a/flink-connectors/flink-connector-elasticsearch-base/src/test/java/org/apache/flink/streaming/connectors/elasticsearch/ElasticsearchSinkBaseTest.java b/flink-connectors/flink-connector-elasticsearch-base/src/test/java/org/apache/flink/streaming/connectors/elasticsearch/ElasticsearchSinkBaseTest.java
index 369d26a..322d64c 100644
--- a/flink-connectors/flink-connector-elasticsearch-base/src/test/java/org/apache/flink/streaming/connectors/elasticsearch/ElasticsearchSinkBaseTest.java
+++ b/flink-connectors/flink-connector-elasticsearch-base/src/test/java/org/apache/flink/streaming/connectors/elasticsearch/ElasticsearchSinkBaseTest.java
@@ -483,7 +483,7 @@ public class ElasticsearchSinkBaseTest {
 				@Override
 				public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
 					// intercept the request and add it to our mock bulk request
-					nextBulkRequest.add(invocationOnMock.getArgumentAt(0, IndexRequest.class));
+					nextBulkRequest.add((IndexRequest) invocationOnMock.getArgument(0));
 
 					return null;
 				}
diff --git a/flink-connectors/flink-connector-kafka-0.9/src/test/java/org/apache/flink/streaming/connectors/kafka/internal/KafkaConsumerThreadTest.java b/flink-connectors/flink-connector-kafka-0.9/src/test/java/org/apache/flink/streaming/connectors/kafka/internal/KafkaConsumerThreadTest.java
index 3d40187..8dbf871 100644
--- a/flink-connectors/flink-connector-kafka-0.9/src/test/java/org/apache/flink/streaming/connectors/kafka/internal/KafkaConsumerThreadTest.java
+++ b/flink-connectors/flink-connector-kafka-0.9/src/test/java/org/apache/flink/streaming/connectors/kafka/internal/KafkaConsumerThreadTest.java
@@ -797,7 +797,7 @@ public class KafkaConsumerThreadTest {
 			when(mockConsumer.position(any(TopicPartition.class))).thenAnswer(new Answer<Object>() {
 				@Override
 				public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-					return mockConsumerAssignmentAndPosition.get(invocationOnMock.getArgumentAt(0, TopicPartition.class));
+					return mockConsumerAssignmentAndPosition.get(invocationOnMock.getArgument(0));
 				}
 			});
 		} else {
@@ -809,7 +809,7 @@ public class KafkaConsumerThreadTest {
 			public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
 				mockConsumerAssignmentAndPosition.clear();
 
-				List<TopicPartition> assignedPartitions = invocationOnMock.getArgumentAt(0, List.class);
+				List<TopicPartition> assignedPartitions = invocationOnMock.getArgument(0);
 				for (TopicPartition assigned : assignedPartitions) {
 					mockConsumerAssignmentAndPosition.put(assigned, null);
 				}
@@ -820,8 +820,8 @@ public class KafkaConsumerThreadTest {
 		doAnswer(new Answer() {
 			@Override
 			public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-				TopicPartition partition = invocationOnMock.getArgumentAt(0, TopicPartition.class);
-				long position = invocationOnMock.getArgumentAt(1, long.class);
+				TopicPartition partition = invocationOnMock.getArgument(0);
+				long position = invocationOnMock.getArgument(1);
 
 				if (!mockConsumerAssignmentAndPosition.containsKey(partition)) {
 					throw new Exception("the current mock assignment does not contain partition " + partition);
@@ -835,7 +835,7 @@ public class KafkaConsumerThreadTest {
 		doAnswer(new Answer() {
 			@Override
 			public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-				TopicPartition partition = invocationOnMock.getArgumentAt(0, TopicPartition.class);
+				TopicPartition partition = invocationOnMock.getArgument(0);
 
 				if (!mockConsumerAssignmentAndPosition.containsKey(partition)) {
 					throw new Exception("the current mock assignment does not contain partition " + partition);
@@ -854,7 +854,7 @@ public class KafkaConsumerThreadTest {
 		doAnswer(new Answer() {
 			@Override
 			public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-				TopicPartition partition = invocationOnMock.getArgumentAt(0, TopicPartition.class);
+				TopicPartition partition = invocationOnMock.getArgument(0);
 
 				if (!mockConsumerAssignmentAndPosition.containsKey(partition)) {
 					throw new Exception("the current mock assignment does not contain partition " + partition);
diff --git a/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducerBaseTest.java b/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducerBaseTest.java
index 8d296e1..a6adb5c 100644
--- a/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducerBaseTest.java
+++ b/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducerBaseTest.java
@@ -352,7 +352,7 @@ public class FlinkKafkaProducerBaseTest {
 			when(mockProducer.send(any(ProducerRecord.class), any(Callback.class))).thenAnswer(new Answer<Object>() {
 				@Override
 				public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-					pendingCallbacks.add(invocationOnMock.getArgumentAt(1, Callback.class));
+					pendingCallbacks.add(invocationOnMock.getArgument(1));
 					return null;
 				}
 			});
diff --git a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerTest.java b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerTest.java
index 05c1cce..c18f430 100644
--- a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerTest.java
+++ b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerTest.java
@@ -28,6 +28,7 @@ import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.java.tuple.Tuple2;
 import org.apache.flink.api.java.typeutils.runtime.PojoSerializer;
 import org.apache.flink.configuration.Configuration;
+import org.apache.flink.mock.Whitebox;
 import org.apache.flink.runtime.state.FunctionSnapshotContext;
 import org.apache.flink.runtime.state.StateInitializationContext;
 import org.apache.flink.runtime.state.StateSnapshotContextSynchronousImpl;
@@ -54,7 +55,6 @@ import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.mockito.Matchers;
 import org.mockito.Mockito;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
diff --git a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisProducerTest.java b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisProducerTest.java
index 6355cf5..3250daa 100644
--- a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisProducerTest.java
+++ b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisProducerTest.java
@@ -48,6 +48,7 @@ import java.util.List;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.doAnswer;
@@ -431,7 +432,7 @@ public class FlinkKinesisProducerTest {
 			// set up mock producer
 			this.mockProducer = mock(KinesisProducer.class);
 
-			when(mockProducer.addUserRecord(anyString(), anyString(), anyString(), any(ByteBuffer.class))).thenAnswer(new Answer<Object>() {
+			when(mockProducer.addUserRecord(anyString(), anyString(), nullable(String.class), any(ByteBuffer.class))).thenAnswer(new Answer<Object>() {
 				@Override
 				public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
 					SettableFuture<UserRecordResult> future = SettableFuture.create();
diff --git a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/proxy/KinesisProxyTest.java b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/proxy/KinesisProxyTest.java
index edf6ceb..6bcf4aa 100644
--- a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/proxy/KinesisProxyTest.java
+++ b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/proxy/KinesisProxyTest.java
@@ -63,9 +63,9 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Test for methods in the {@link KinesisProxy} class.
diff --git a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopInputFormatTest.java b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopInputFormatTest.java
index bfee273..48dc599 100644
--- a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopInputFormatTest.java
+++ b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopInputFormatTest.java
@@ -42,10 +42,10 @@ import java.io.IOException;
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.anyLong;
-import static org.mockito.Mockito.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -151,7 +151,7 @@ public class HadoopInputFormatTest {
 	@Test
 	public void testFetchNext() throws IOException {
 		DummyRecordReader recordReader = mock(DummyRecordReader.class);
-		when(recordReader.next(anyString(), anyLong())).thenReturn(true);
+		when(recordReader.next(nullable(String.class), nullable(Long.class))).thenReturn(true);
 
 		DummyInputFormat inputFormat = mock(DummyInputFormat.class);
 		when(inputFormat.getRecordReader(any(InputSplit.class), any(JobConf.class), any(Reporter.class))).thenReturn(recordReader);
@@ -160,7 +160,7 @@ public class HadoopInputFormatTest {
 		hadoopInputFormat.open(getHadoopInputSplit());
 		hadoopInputFormat.fetchNext();
 
-		verify(recordReader, times(1)).next(anyString(), anyLong());
+		verify(recordReader, times(1)).next(nullable(String.class), anyLong());
 		assertThat(hadoopInputFormat.hasNext, is(true));
 		assertThat(hadoopInputFormat.fetched, is(true));
 	}
diff --git a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopOutputFormatTest.java b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopOutputFormatTest.java
index 362a37f..6ddef7b 100644
--- a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopOutputFormatTest.java
+++ b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapred/HadoopOutputFormatTest.java
@@ -38,6 +38,7 @@ import org.mockito.Mockito;
 
 import java.io.IOException;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyLong;
@@ -65,7 +66,7 @@ public class HadoopOutputFormatTest {
 
 		verify(jobConf, times(2)).getOutputCommitter();
 		verify(outputCommitter, times(1)).setupJob(any(JobContext.class));
-		verify(dummyOutputFormat, times(1)).getRecordWriter(any(FileSystem.class), any(JobConf.class), anyString(), any(Progressable.class));
+		verify(dummyOutputFormat, times(1)).getRecordWriter(nullable(FileSystem.class), any(JobConf.class), anyString(), any(Progressable.class));
 	}
 
 	@Test
@@ -96,7 +97,7 @@ public class HadoopOutputFormatTest {
 	public void testCloseWithTaskCommit() throws Exception {
 		OutputFormat<String, Long> dummyOutputFormat = mock(DummyOutputFormat.class);
 		DummyOutputCommitter outputCommitter = mock(DummyOutputCommitter.class);
-		when(outputCommitter.needsTaskCommit(any(TaskAttemptContext.class))).thenReturn(true);
+		when(outputCommitter.needsTaskCommit(nullable(TaskAttemptContext.class))).thenReturn(true);
 		DummyRecordWriter recordWriter = mock(DummyRecordWriter.class);
 		JobConf jobConf = mock(JobConf.class);
 
@@ -106,8 +107,8 @@ public class HadoopOutputFormatTest {
 
 		outputFormat.close();
 
-		verify(recordWriter, times(1)).close(any(Reporter.class));
-		verify(outputCommitter, times(1)).commitTask(any(TaskAttemptContext.class));
+		verify(recordWriter, times(1)).close(nullable(Reporter.class));
+		verify(outputCommitter, times(1)).commitTask(nullable(TaskAttemptContext.class));
 	}
 
 	@Test
diff --git a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopInputFormatTest.java b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopInputFormatTest.java
index 941eb1f..bef7235 100644
--- a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopInputFormatTest.java
+++ b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopInputFormatTest.java
@@ -43,6 +43,7 @@ import java.util.List;
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
@@ -81,13 +82,13 @@ public class HadoopInputFormatTest {
 	@Test
 	public void testOpen() throws Exception {
 		DummyInputFormat inputFormat = mock(DummyInputFormat.class);
-		when(inputFormat.createRecordReader(any(InputSplit.class), any(TaskAttemptContext.class))).thenReturn(new DummyRecordReader());
+		when(inputFormat.createRecordReader(nullable(InputSplit.class), any(TaskAttemptContext.class))).thenReturn(new DummyRecordReader());
 		HadoopInputSplit inputSplit = mock(HadoopInputSplit.class);
 
 		HadoopInputFormat<String, Long> hadoopInputFormat = setupHadoopInputFormat(inputFormat, Job.getInstance(), null);
 		hadoopInputFormat.open(inputSplit);
 
-		verify(inputFormat, times(1)).createRecordReader(any(InputSplit.class), any(TaskAttemptContext.class));
+		verify(inputFormat, times(1)).createRecordReader(nullable(InputSplit.class), any(TaskAttemptContext.class));
 		assertThat(hadoopInputFormat.fetched, is(false));
 	}
 
diff --git a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopOutputFormatTest.java b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopOutputFormatTest.java
index 8e2329a..103ecf4 100644
--- a/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopOutputFormatTest.java
+++ b/flink-connectors/flink-hadoop-compatibility/src/test/java/org/apache/flink/api/java/hadoop/mapreduce/HadoopOutputFormatTest.java
@@ -33,9 +33,8 @@ import org.mockito.Mockito;
 
 import java.io.IOException;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.anyLong;
-import static org.mockito.Mockito.anyString;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
@@ -59,7 +58,7 @@ public class HadoopOutputFormatTest {
 
 		hadoopOutputFormat.writeRecord(new Tuple2<String, Long>());
 
-		verify(recordWriter, times(1)).write(anyString(), anyLong());
+		verify(recordWriter, times(1)).write(nullable(String.class), nullable(Long.class));
 	}
 
 	@Test
@@ -89,8 +88,8 @@ public class HadoopOutputFormatTest {
 
 		hadoopOutputFormat.close();
 
-		verify(outputCommitter, times(1)).commitTask(any(TaskAttemptContext.class));
-		verify(recordWriter, times(1)).close(any(TaskAttemptContext.class));
+		verify(outputCommitter, times(1)).commitTask(nullable(TaskAttemptContext.class));
+		verify(recordWriter, times(1)).close(nullable(TaskAttemptContext.class));
 	}
 
 	@Test
@@ -104,8 +103,8 @@ public class HadoopOutputFormatTest {
 
 		hadoopOutputFormat.close();
 
-		verify(outputCommitter, times(0)).commitTask(any(TaskAttemptContext.class));
-		verify(recordWriter, times(1)).close(any(TaskAttemptContext.class));
+		verify(outputCommitter, times(0)).commitTask(nullable(TaskAttemptContext.class));
+		verify(recordWriter, times(1)).close(nullable(TaskAttemptContext.class));
 	}
 
 	@Test
@@ -134,7 +133,7 @@ public class HadoopOutputFormatTest {
 
 	private OutputCommitter setupOutputCommitter(boolean needsTaskCommit) throws IOException {
 		OutputCommitter outputCommitter = Mockito.mock(OutputCommitter.class);
-		when(outputCommitter.needsTaskCommit(any(TaskAttemptContext.class))).thenReturn(needsTaskCommit);
+		when(outputCommitter.needsTaskCommit(nullable(TaskAttemptContext.class))).thenReturn(needsTaskCommit);
 		doNothing().when(outputCommitter).commitTask(any(TaskAttemptContext.class));
 
 		return outputCommitter;
diff --git a/flink-core/src/test/java/org/apache/flink/util/MethodForwardingTestUtil.java b/flink-core/src/test/java/org/apache/flink/util/MethodForwardingTestUtil.java
index 8a9e8ca..64eda7f 100644
--- a/flink-core/src/test/java/org/apache/flink/util/MethodForwardingTestUtil.java
+++ b/flink-core/src/test/java/org/apache/flink/util/MethodForwardingTestUtil.java
@@ -98,8 +98,7 @@ public class MethodForwardingTestUtil {
 		I delegate = delegateObjectSupplier.get();
 
 		//check if we need to wrap the delegate object as a spy, or if it is already testable with Mockito.
-		MockUtil mockUtil = new MockUtil();
-		if (!mockUtil.isSpy(delegate) || !mockUtil.isMock(delegate)) {
+		if (!MockUtil.isSpy(delegate) || !MockUtil.isMock(delegate)) {
 			delegate = spy(delegate);
 		}
 
diff --git a/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroOutputFormatTest.java b/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroOutputFormatTest.java
index 3397b8e..f07c36b 100644
--- a/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroOutputFormatTest.java
+++ b/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroOutputFormatTest.java
@@ -24,6 +24,7 @@ import org.apache.flink.core.fs.Path;
 import org.apache.flink.formats.avro.generated.Colors;
 import org.apache.flink.formats.avro.generated.Fixed2;
 import org.apache.flink.formats.avro.generated.User;
+import org.apache.flink.mock.Whitebox;
 
 import org.apache.avro.Schema;
 import org.apache.avro.file.DataFileReader;
@@ -34,7 +35,6 @@ import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
 import org.joda.time.LocalTime;
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java
index 4786484..3f249a8 100644
--- a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java
+++ b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java
@@ -35,6 +35,7 @@ import org.apache.flink.cep.pattern.Pattern;
 import org.apache.flink.cep.pattern.conditions.IterativeCondition;
 import org.apache.flink.cep.pattern.conditions.SimpleCondition;
 import org.apache.flink.contrib.streaming.state.RocksDBStateBackend;
+import org.apache.flink.mock.Whitebox;
 import org.apache.flink.runtime.checkpoint.OperatorSubtaskState;
 import org.apache.flink.runtime.state.memory.MemoryStateBackend;
 import org.apache.flink.streaming.api.watermark.Watermark;
@@ -53,7 +54,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.mockito.Mockito;
-import org.mockito.internal.util.reflection.Whitebox;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/flink-mesos/src/test/java/org/apache/flink/mesos/runtime/clusterframework/MesosResourceManagerTest.java b/flink-mesos/src/test/java/org/apache/flink/mesos/runtime/clusterframework/MesosResourceManagerTest.java
index 5163724..94bc860 100644
--- a/flink-mesos/src/test/java/org/apache/flink/mesos/runtime/clusterframework/MesosResourceManagerTest.java
+++ b/flink-mesos/src/test/java/org/apache/flink/mesos/runtime/clusterframework/MesosResourceManagerTest.java
@@ -344,7 +344,7 @@ public class MesosResourceManagerTest extends TestLogger {
 				doAnswer(new Answer<Object>() {
 					@Override
 					public Object answer(InvocationOnMock invocation) throws Throwable {
-						rmActions = invocation.getArgumentAt(2, ResourceActions.class);
+						rmActions = invocation.getArgument(2);
 						slotManagerStarted.complete(true);
 						return null;
 					}
diff --git a/flink-mesos/src/test/scala/org/apache/flink/mesos/Utils.scala b/flink-mesos/src/test/scala/org/apache/flink/mesos/Utils.scala
index bd6235a..39648e5 100644
--- a/flink-mesos/src/test/scala/org/apache/flink/mesos/Utils.scala
+++ b/flink-mesos/src/test/scala/org/apache/flink/mesos/Utils.scala
@@ -29,12 +29,9 @@ import scala.reflect.ClassTag
 
 object Matchers {
   def contentsMatch[T](plan: Seq[T]): java.util.Collection[T] = {
-    org.mockito.Matchers.argThat(new ArgumentMatcher[java.util.Collection[T]] {
-      override def matches(o: scala.Any): Boolean = o match {
-        case actual: java.util.Collection[T] =>
+    org.mockito.ArgumentMatchers.argThat(new ArgumentMatcher[java.util.Collection[T]] {
+      def matches(actual: java.util.Collection[T]): Boolean =
           actual.size() == plan.size && actual.containsAll(plan.asJava)
-        case _ => false
-      }
     })
   }
 }
diff --git a/flink-mesos/src/test/scala/org/apache/flink/mesos/scheduler/LaunchCoordinatorTest.scala b/flink-mesos/src/test/scala/org/apache/flink/mesos/scheduler/LaunchCoordinatorTest.scala
index c24ba0c..a4ae2bb 100644
--- a/flink-mesos/src/test/scala/org/apache/flink/mesos/scheduler/LaunchCoordinatorTest.scala
+++ b/flink-mesos/src/test/scala/org/apache/flink/mesos/scheduler/LaunchCoordinatorTest.scala
@@ -37,7 +37,7 @@ import org.junit.runner.RunWith
 import org.mockito.Mockito.{verify, _}
 import org.mockito.invocation.InvocationOnMock
 import org.mockito.stubbing.Answer
-import org.mockito.{Matchers => MM, Mockito}
+import org.mockito.{ArgumentMatchers => MM, Mockito}
 import org.scalatest.junit.JUnitRunner
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
 
diff --git a/flink-queryable-state/flink-queryable-state-runtime/src/test/java/org/apache/flink/queryablestate/network/KvStateClientHandlerTest.java b/flink-queryable-state/flink-queryable-state-runtime/src/test/java/org/apache/flink/queryablestate/network/KvStateClientHandlerTest.java
index cb490aa..bc228b7 100644
--- a/flink-queryable-state/flink-queryable-state-runtime/src/test/java/org/apache/flink/queryablestate/network/KvStateClientHandlerTest.java
+++ b/flink-queryable-state/flink-queryable-state-runtime/src/test/java/org/apache/flink/queryablestate/network/KvStateClientHandlerTest.java
@@ -30,6 +30,7 @@ import org.junit.Test;
 import java.nio.channels.ClosedChannelException;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.isA;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
@@ -78,7 +79,7 @@ public class KvStateClientHandlerTest {
 
 		// Verify callback
 		channel.writeInbound(buf);
-		verify(callback, times(1)).onRequestFailure(eq(1222112278L), any(RuntimeException.class));
+		verify(callback, times(1)).onRequestFailure(eq(1222112278L), isA(RuntimeException.class));
 		assertEquals("Buffer not recycled", 0, buf.refCnt());
 
 		//
@@ -91,7 +92,7 @@ public class KvStateClientHandlerTest {
 
 		// Verify callback
 		channel.writeInbound(buf);
-		verify(callback, times(1)).onFailure(any(RuntimeException.class));
+		verify(callback, times(1)).onFailure(isA(RuntimeException.class));
 
 		//
 		// Unexpected messages
@@ -100,20 +101,20 @@ public class KvStateClientHandlerTest {
 
 		// Verify callback
 		channel.writeInbound(buf);
-		verify(callback, times(2)).onFailure(any(IllegalStateException.class));
+		verify(callback, times(1)).onFailure(isA(IllegalStateException.class));
 		assertEquals("Buffer not recycled", 0, buf.refCnt());
 
 		//
 		// Exception caught
 		//
 		channel.pipeline().fireExceptionCaught(new RuntimeException("Expected test Exception"));
-		verify(callback, times(3)).onFailure(any(RuntimeException.class));
+		verify(callback, times(3)).onFailure(isA(RuntimeException.class));
 
 		//
 		// Channel inactive
 		//
 		channel.pipeline().fireChannelInactive();
-		verify(callback, times(4)).onFailure(any(ClosedChannelException.class));
+		verify(callback, times(1)).onFailure(isA(ClosedChannelException.class));
 	}
 
 }
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStateRestoreTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStateRestoreTest.java
index af6ec71..236717f 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStateRestoreTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStateRestoreTest.java
@@ -39,6 +39,7 @@ import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.mockito.hamcrest.MockitoHamcrest;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -157,9 +158,9 @@ public class CheckpointStateRestoreTest {
 				}
 			};
 
-			verify(statefulExec1, times(1)).setInitialState(Mockito.argThat(matcher));
-			verify(statefulExec2, times(1)).setInitialState(Mockito.argThat(matcher));
-			verify(statefulExec3, times(1)).setInitialState(Mockito.argThat(matcher));
+			verify(statefulExec1, times(1)).setInitialState(MockitoHamcrest.argThat(matcher));
+			verify(statefulExec2, times(1)).setInitialState(MockitoHamcrest.argThat(matcher));
+			verify(statefulExec3, times(1)).setInitialState(MockitoHamcrest.argThat(matcher));
 			verify(statelessExec1, times(0)).setInitialState(Mockito.<JobManagerTaskRestore>any());
 			verify(statelessExec2, times(0)).setInitialState(Mockito.<JobManagerTaskRestore>any());
 		}
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/PendingCheckpointTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/PendingCheckpointTest.java
index f45ac14..01f1dd1 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/PendingCheckpointTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/PendingCheckpointTest.java
@@ -51,6 +51,7 @@ import java.util.concurrent.ScheduledFuture;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyLong;
 import static org.mockito.Mockito.doNothing;
@@ -227,7 +228,7 @@ public class PendingCheckpointTest {
 			pending.setStatsCallback(callback);
 
 			pending.acknowledgeTask(ATTEMPT_ID, null, new CheckpointMetrics());
-			verify(callback, times(1)).reportSubtaskStats(any(JobVertexID.class), any(SubtaskStateStats.class));
+			verify(callback, times(1)).reportSubtaskStats(nullable(JobVertexID.class), any(SubtaskStateStats.class));
 
 			pending.finalizeCheckpoint();
 			verify(callback, times(1)).reportCompletedCheckpoint(any(String.class));
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/SpillableSubpartitionTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/SpillableSubpartitionTest.java
index 57d2cd6..71dbc2b 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/SpillableSubpartitionTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/SpillableSubpartitionTest.java
@@ -56,7 +56,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.mock;
@@ -126,7 +126,7 @@ public class SpillableSubpartitionTest extends SubpartitionTestBase {
 
 		// Mock I/O manager returning the blocking spill writer
 		IOManager ioManager = mock(IOManager.class);
-		when(ioManager.createBufferFileWriter(any(FileIOChannel.ID.class)))
+		when(ioManager.createBufferFileWriter(nullable(FileIOChannel.ID.class)))
 			.thenReturn(spillWriter);
 
 		// The partition
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/net/ConnectionUtilsTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/net/ConnectionUtilsTest.java
index d7c4baa..3f9ee8e 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/net/ConnectionUtilsTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/net/ConnectionUtilsTest.java
@@ -22,7 +22,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
 import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 
 import java.io.IOException;
@@ -40,7 +39,6 @@ import static org.junit.Assert.assertTrue;
  * Tests for the network utilities.
  */
 @RunWith(PowerMockRunner.class)
-@PrepareForTest(ConnectionUtils.class)
 public class ConnectionUtilsTest {
 
 	@Test
@@ -91,7 +89,6 @@ public class ConnectionUtilsTest {
 			final InetAddress address = ConnectionUtils.findConnectingAddress(
 				socketAddress, 2000, 400);
 
-			PowerMockito.verifyStatic();
 			// Make sure we got an address via alternative means
 			assertNotNull(address);
 		}
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/registration/RetryingRegistrationTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/registration/RetryingRegistrationTest.java
index ff5a748..d7dbec6 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/registration/RetryingRegistrationTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/registration/RetryingRegistrationTest.java
@@ -143,9 +143,9 @@ public class RetryingRegistrationTest extends TestLogger {
 			when(rpc.getExecutor()).thenReturn(executor);
 			when(rpc.scheduleRunnable(any(Runnable.class), anyLong(), any(TimeUnit.class))).thenAnswer(
 				(InvocationOnMock invocation) -> {
-					final Runnable runnable = invocation.getArgumentAt(0, Runnable.class);
-					final long delay = invocation.getArgumentAt(1, Long.class);
-					final TimeUnit timeUnit = invocation.getArgumentAt(2, TimeUnit.class);
+					final Runnable runnable = invocation.getArgument(0);
+					final long delay = invocation.getArgument(1);
+					final TimeUnit timeUnit = invocation.getArgument(2);
 					return TestingUtils.defaultScheduledExecutor().schedule(runnable, delay, timeUnit);
 				});
 
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/rest/handler/legacy/TaskManagerLogHandlerTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/rest/handler/legacy/TaskManagerLogHandlerTest.java
index 2b0291f..5e5cf78 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/rest/handler/legacy/TaskManagerLogHandlerTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/rest/handler/legacy/TaskManagerLogHandlerTest.java
@@ -127,7 +127,7 @@ public class TaskManagerLogHandlerTest {
 		when(ctx.write(isA(ByteBuf.class))).thenAnswer(new Answer<Object>() {
 			@Override
 			public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-				ByteBuf data = invocationOnMock.getArgumentAt(0, ByteBuf.class);
+				ByteBuf data = invocationOnMock.getArgument(0);
 				exception.set(new String(data.array(), ConfigConstants.DEFAULT_CHARSET));
 				return null;
 			}
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorITCase.java b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorITCase.java
index f0e0efe..31fc20c 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorITCase.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorITCase.java
@@ -77,12 +77,12 @@ import java.util.concurrent.ScheduledThreadPoolExecutor;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.RETURNS_MOCKS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 public class TaskExecutorITCase extends TestLogger {
 
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorTest.java
index 168b251..cd26618 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorTest.java
@@ -106,8 +106,8 @@ import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.rules.TestName;
 import org.mockito.ArgumentCaptor;
-import org.mockito.Matchers;
 import org.mockito.Mockito;
+import org.mockito.hamcrest.MockitoHamcrest;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.slf4j.Logger;
@@ -901,7 +901,7 @@ public class TaskExecutorTest extends TestLogger {
 			// the job leader should get the allocation id offered
 			verify(jobMasterGateway, Mockito.timeout(timeout.toMilliseconds())).offerSlots(
 					any(ResourceID.class),
-					(Collection<SlotOffer>)Matchers.argThat(contains(slotOffer)),
+					(Collection<SlotOffer>) MockitoHamcrest.argThat(contains(slotOffer)),
 					any(Time.class));
 		} finally {
 			RpcUtils.terminateRpcEndpoint(taskManager, timeout);
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/slot/TimerServiceTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/slot/TimerServiceTest.java
index 7790622..2514c62 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/slot/TimerServiceTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/slot/TimerServiceTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.flink.runtime.taskexecutor.slot;
 
+import org.apache.flink.mock.Whitebox;
 import org.apache.flink.runtime.clusterframework.types.AllocationID;
 import org.apache.flink.util.TestLogger;
 
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
 
 import java.util.Map;
 import java.util.concurrent.ScheduledExecutorService;
diff --git a/flink-runtime/src/test/scala/org/apache/flink/runtime/jobmanager/JobManagerITCase.scala b/flink-runtime/src/test/scala/org/apache/flink/runtime/jobmanager/JobManagerITCase.scala
index 3f3950b..3ffe770 100644
--- a/flink-runtime/src/test/scala/org/apache/flink/runtime/jobmanager/JobManagerITCase.scala
+++ b/flink-runtime/src/test/scala/org/apache/flink/runtime/jobmanager/JobManagerITCase.scala
@@ -37,7 +37,7 @@ import org.apache.flink.runtime.testingUtils.TestingJobManagerMessages._
 import org.apache.flink.runtime.testingUtils.{ScalaTestingUtils, TestingUtils}
 import org.apache.flink.runtime.testtasks._
 import org.junit.runner.RunWith
-import org.mockito.Mockito
+import org.mockito.{ArgumentMatchers, Mockito}
 import org.mockito.Mockito._
 import org.scalatest.junit.JUnitRunner
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
@@ -859,7 +859,7 @@ class JobManagerITCase(_system: ActorSystem)
           val checkpointCoordinator = mock(classOf[CheckpointCoordinator])
           doThrow(new IllegalStateException("Expected Test Exception"))
             .when(checkpointCoordinator)
-            .triggerSavepoint(org.mockito.Matchers.anyLong(), org.mockito.Matchers.anyString())
+            .triggerSavepoint(ArgumentMatchers.anyLong(), ArgumentMatchers.anyString())
 
           // Update the savepoint coordinator field
           val field = executionGraph.getClass.getDeclaredField("checkpointCoordinator")
@@ -915,11 +915,11 @@ class JobManagerITCase(_system: ActorSystem)
           val checkpointCoordinator = mock(classOf[CheckpointCoordinator])
           doThrow(new IllegalStateException("Expected Test Exception"))
             .when(checkpointCoordinator)
-            .triggerSavepoint(org.mockito.Matchers.anyLong(), org.mockito.Matchers.anyString())
+            .triggerSavepoint(ArgumentMatchers.anyLong(), ArgumentMatchers.anyString())
           val savepointPathPromise = new CompletableFuture[CompletedCheckpoint]()
-          doReturn(savepointPathPromise)
+          doReturn(savepointPathPromise, Nil: _*)
             .when(checkpointCoordinator)
-            .triggerSavepoint(org.mockito.Matchers.anyLong(), org.mockito.Matchers.anyString())
+            .triggerSavepoint(ArgumentMatchers.anyLong(), ArgumentMatchers.anyString())
 
           // Request the execution graph and set a checkpoint coordinator mock
           jobManager.tell(RequestExecutionGraph(jobGraph.getJobID), testActor)
@@ -984,12 +984,12 @@ class JobManagerITCase(_system: ActorSystem)
           val checkpointCoordinator = mock(classOf[CheckpointCoordinator])
           doThrow(new IllegalStateException("Expected Test Exception"))
             .when(checkpointCoordinator)
-            .triggerSavepoint(org.mockito.Matchers.anyLong(), org.mockito.Matchers.anyString())
+            .triggerSavepoint(ArgumentMatchers.anyLong(), ArgumentMatchers.anyString())
 
           val savepointPromise = new CompletableFuture[CompletedCheckpoint]()
-          doReturn(savepointPromise)
+          doReturn(savepointPromise, Nil: _*)
             .when(checkpointCoordinator)
-            .triggerSavepoint(org.mockito.Matchers.anyLong(), org.mockito.Matchers.anyString())
+            .triggerSavepoint(ArgumentMatchers.anyLong(), ArgumentMatchers.anyString())
 
           // Request the execution graph and set a checkpoint coordinator mock
           jobManager.tell(RequestExecutionGraph(jobGraph.getJobID), testActor)
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorTest.java
index f0195a2..64375d5 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorTest.java
@@ -24,6 +24,7 @@ import org.apache.flink.api.common.typeutils.base.StringSerializer;
 import org.apache.flink.api.java.functions.KeySelector;
 import org.apache.flink.api.java.tuple.Tuple2;
 import org.apache.flink.core.fs.CloseableRegistry;
+import org.apache.flink.mock.Whitebox;
 import org.apache.flink.runtime.checkpoint.CheckpointOptions;
 import org.apache.flink.runtime.checkpoint.OperatorSubtaskState;
 import org.apache.flink.runtime.state.AbstractKeyedStateBackend;
@@ -46,7 +47,6 @@ import org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
@@ -61,6 +61,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.contains;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyLong;
@@ -579,7 +580,14 @@ public class AbstractStreamOperatorTest {
 
 		OperatorSnapshotFutures operatorSnapshotResult = spy(new OperatorSnapshotFutures());
 
-		whenNew(StateSnapshotContextSynchronousImpl.class).withAnyArguments().thenReturn(context);
+		whenNew(StateSnapshotContextSynchronousImpl.class)
+			.withArguments(
+				anyLong(),
+				anyLong(),
+				any(CheckpointStreamFactory.class),
+				nullable(KeyGroupRange.class),
+				any(CloseableRegistry.class))
+			.thenReturn(context);
 		whenNew(OperatorSnapshotFutures.class).withAnyArguments().thenReturn(operatorSnapshotResult);
 
 		StreamTask<Void, AbstractStreamOperator<Void>> containingTask = mock(StreamTask.class);
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/windowing/functions/InternalWindowFunctionTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/windowing/functions/InternalWindowFunctionTest.java
index dc5b24c..b6f9940 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/windowing/functions/InternalWindowFunctionTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/windowing/functions/InternalWindowFunctionTest.java
@@ -61,11 +61,11 @@ import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.collection.IsMapContaining.hasEntry;
 import static org.hamcrest.core.AllOf.allOf;
 import static org.mockito.Mockito.anyObject;
-import static org.mockito.Mockito.argThat;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Tests for {@link InternalWindowFunction}.
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferAlignmentLimitTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferAlignmentLimitTest.java
index 9f46ed7..1c7ff35 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferAlignmentLimitTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferAlignmentLimitTest.java
@@ -49,11 +49,11 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.argThat;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Tests for the barrier buffer's maximum limit of buffered/spilled bytes.
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferTestBase.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferTestBase.java
index b2ed781..0be5b08 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferTestBase.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/BarrierBufferTestBase.java
@@ -25,6 +25,7 @@ import org.apache.flink.runtime.checkpoint.CheckpointMetrics;
 import org.apache.flink.runtime.checkpoint.CheckpointOptions;
 import org.apache.flink.runtime.checkpoint.decline.CheckpointDeclineOnCancellationBarrierException;
 import org.apache.flink.runtime.checkpoint.decline.CheckpointDeclineSubsumedException;
+import org.apache.flink.runtime.checkpoint.decline.InputEndOfStreamException;
 import org.apache.flink.runtime.io.network.api.CancelCheckpointMarker;
 import org.apache.flink.runtime.io.network.api.CheckpointBarrier;
 import org.apache.flink.runtime.io.network.api.EndOfPartitionEvent;
@@ -48,13 +49,14 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.isA;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Tests for the behavior of the {@link BarrierBuffer} with different {@link BufferBlocker} implements.
@@ -523,7 +525,7 @@ public abstract class BarrierBufferTestBase {
 		check(sequence[12], buffer.getNextNonBlocked(), PAGE_SIZE);
 		assertEquals(3L, buffer.getCurrentCheckpointId());
 		validateAlignmentTime(startTs, buffer.getAlignmentDurationNanos());
-		verify(toNotify).abortCheckpointOnBarrier(eq(2L), any(CheckpointDeclineSubsumedException.class));
+		verify(toNotify).abortCheckpointOnBarrier(eq(2L), isA(CheckpointDeclineSubsumedException.class));
 		check(sequence[16], buffer.getNextNonBlocked(), PAGE_SIZE);
 
 		// checkpoint 3 alignment in progress
@@ -531,7 +533,7 @@ public abstract class BarrierBufferTestBase {
 
 		// checkpoint 3 aborted (end of partition)
 		check(sequence[20], buffer.getNextNonBlocked(), PAGE_SIZE);
-		verify(toNotify).abortCheckpointOnBarrier(eq(3L), any(CheckpointDeclineSubsumedException.class));
+		verify(toNotify).abortCheckpointOnBarrier(eq(3L), isA(InputEndOfStreamException.class));
 
 		// replay buffered data from checkpoint 3
 		check(sequence[18], buffer.getNextNonBlocked(), PAGE_SIZE);
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicEventTimeSessionWindowsTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicEventTimeSessionWindowsTest.java
index d048dad..b9b56f6 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicEventTimeSessionWindowsTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicEventTimeSessionWindowsTest.java
@@ -46,13 +46,13 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyCollection;
-import static org.mockito.Mockito.argThat;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Tests for {@link DynamicEventTimeSessionWindows}.
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicProcessingTimeSessionWindowsTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicProcessingTimeSessionWindowsTest.java
index a6bcedc..22b815c 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicProcessingTimeSessionWindowsTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/DynamicProcessingTimeSessionWindowsTest.java
@@ -46,13 +46,13 @@ import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyCollection;
-import static org.mockito.Mockito.argThat;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Tests for {@link DynamicProcessingTimeSessionWindows}.
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EventTimeSessionWindowsTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EventTimeSessionWindowsTest.java
index 7d96a1f..bd8d108 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EventTimeSessionWindowsTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EventTimeSessionWindowsTest.java
@@ -48,12 +48,12 @@ import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.anyCollection;
-import static org.mockito.Mockito.argThat;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Tests for {@link EventTimeSessionWindows}.
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/ProcessingTimeSessionWindowsTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/ProcessingTimeSessionWindowsTest.java
index 5faca94..16c639a 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/ProcessingTimeSessionWindowsTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/ProcessingTimeSessionWindowsTest.java
@@ -48,13 +48,13 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.anyCollection;
-import static org.mockito.Mockito.argThat;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Tests for {@link ProcessingTimeSessionWindows}.
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorContractTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorContractTest.java
index 8dee3b0..e065e79 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorContractTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorContractTest.java
@@ -71,7 +71,6 @@ import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.anyCollection;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doAnswer;
@@ -80,6 +79,7 @@ import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
 
 /**
  * Base for window operator tests that verify correct interaction with the other windowing
@@ -573,7 +573,7 @@ public abstract class WindowOperatorContractTest extends TestLogger {
 			@Override
 			public Void answer(InvocationOnMock invocation) throws Exception {
 				@SuppressWarnings("unchecked")
-				Collector<String> out = invocation.getArgumentAt(4, Collector.class);
+				Collector<String> out = invocation.getArgument(4);
 				out.collect("Hallo");
 				out.collect("Ciao");
 				return null;
@@ -616,7 +616,7 @@ public abstract class WindowOperatorContractTest extends TestLogger {
 			@Override
 			public Void answer(InvocationOnMock invocation) throws Exception {
 				@SuppressWarnings("unchecked")
-				Collector<String> out = invocation.getArgumentAt(4, Collector.class);
+				Collector<String> out = invocation.getArgument(4);
 				out.collect("Hallo");
 				out.collect("Ciao");
 				return null;
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java
index 4c28e40..7a0cbaa 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java
@@ -1232,16 +1232,16 @@ public class WindowOperatorTest extends TestLogger {
 			Tuple2<String, Integer> element = (Tuple2<String, Integer>) invocation.getArguments()[0];
 			switch (element.f0) {
 				case "key1":
-					return 3000;
+					return 3000L;
 				case "key2":
 					switch (element.f1) {
 						case 10:
-							return 1000;
+							return 1000L;
 						default:
-							return 2000;
+							return 2000L;
 					}
 				default:
-					return 0;
+					return 0L;
 			}
 		});
 
@@ -1314,16 +1314,16 @@ public class WindowOperatorTest extends TestLogger {
 			Tuple2<String, Integer> element = (Tuple2<String, Integer>) invocation.getArguments()[0];
 			switch (element.f0) {
 				case "key1":
-					return 3000;
+					return 3000L;
 				case "key2":
 					switch (element.f1) {
 						case 10:
-							return 1000;
+							return 1000L;
 						default:
-							return 2000;
+							return 2000L;
 					}
 				default:
-					return 0;
+					return 0L;
 			}
 		});
 
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/StreamTaskTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/StreamTaskTest.java
index 6a9dda4..a94f8ac 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/StreamTaskTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/StreamTaskTest.java
@@ -28,6 +28,7 @@ import org.apache.flink.configuration.CheckpointingOptions;
 import org.apache.flink.configuration.Configuration;
 import org.apache.flink.core.fs.CloseableRegistry;
 import org.apache.flink.core.testutils.OneShotLatch;
+import org.apache.flink.mock.Whitebox;
 import org.apache.flink.runtime.blob.BlobCacheService;
 import org.apache.flink.runtime.blob.PermanentBlobCache;
 import org.apache.flink.runtime.blob.TransientBlobCache;
@@ -116,7 +117,6 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
@@ -152,6 +152,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyLong;
 import static org.mockito.Matchers.anyString;
@@ -700,7 +701,7 @@ public class StreamTaskTest extends TestLogger {
 		doAnswer(new Answer() {
 			@Override
 			public Object answer(InvocationOnMock invocation) throws Throwable {
-				SubtaskState subtaskState = invocation.getArgumentAt(4, SubtaskState.class);
+				SubtaskState subtaskState = invocation.getArgument(4);
 				checkpointResult.add(subtaskState);
 				checkpointCompletedLatch.trigger();
 				return null;
@@ -710,7 +711,7 @@ public class StreamTaskTest extends TestLogger {
 			any(ExecutionAttemptID.class),
 			anyLong(),
 			any(CheckpointMetrics.class),
-			any(TaskStateSnapshot.class));
+			nullable(TaskStateSnapshot.class));
 
 		TaskStateManager taskStateManager = new TaskStateManagerImpl(
 			new JobID(1L, 2L),
diff --git a/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/mock/Whitebox.java b/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/mock/Whitebox.java
new file mode 100644
index 0000000..e5a13ad
--- /dev/null
+++ b/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/mock/Whitebox.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.mock;
+
+import java.lang.reflect.Field;
+
+/**
+ * Copied from mockito.
+ *
+ * <p>Original license:
+ * Copyright (c) 2007 Mockito contributors
+ * This program is made available under the terms of the MIT License.
+ */
+public class Whitebox {
+	public static Object getInternalState(Object target, String field) {
+		Class<?> c = target.getClass();
+		try {
+			Field f = getFieldFromHierarchy(c, field);
+			f.setAccessible(true);
+			return f.get(target);
+		} catch (Exception e) {
+			throw new RuntimeException("Unable to set internal state on a private field. Please report to mockito mailing list.", e);
+		}
+	}
+
+	public static void setInternalState(Object target, String field, Object value) {
+		Class<?> c = target.getClass();
+		try {
+			Field f = getFieldFromHierarchy(c, field);
+			f.setAccessible(true);
+			f.set(target, value);
+		} catch (Exception e) {
+			throw new RuntimeException("Unable to set internal state on a private field. Please report to mockito mailing list.", e);
+		}
+	}
+
+	private static Field getFieldFromHierarchy(Class<?> clazz, String field) {
+		Field f = getField(clazz, field);
+		while (f == null && clazz != Object.class) {
+			clazz = clazz.getSuperclass();
+			f = getField(clazz, field);
+		}
+		if (f == null) {
+			throw new RuntimeException(
+				"You want me to set value to this field: '" + field +
+					"' on this class: '" + clazz.getSimpleName() +
+					"' but this field is not declared withing hierarchy of this class!");
+		}
+		return f;
+	}
+
+	private static Field getField(Class<?> clazz, String field) {
+		try {
+			return clazz.getDeclaredField(field);
+		} catch (NoSuchFieldException e) {
+			return null;
+		}
+	}
+}
diff --git a/pom.xml b/pom.xml
index a8dd5c3..7709493 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,8 +123,8 @@ under the License.
 		<prometheus.version>0.3.0</prometheus.version>
 		<avro.version>1.8.2</avro.version>
 		<junit.version>4.12</junit.version>
-		<mockito.version>1.10.19</mockito.version>
-		<powermock.version>1.6.5</powermock.version>
+		<mockito.version>2.21.0</mockito.version>
+		<powermock.version>2.0.0-beta.5</powermock.version>
 		<hamcrest.version>1.3</hamcrest.version>
 		<japicmp.skip>false</japicmp.skip>
 		<codebase>new</codebase>
@@ -171,7 +171,7 @@ under the License.
 
 		<dependency>
 			<groupId>org.mockito</groupId>
-			<artifactId>mockito-all</artifactId>
+			<artifactId>mockito-core</artifactId>
 			<version>${mockito.version}</version>
 			<type>jar</type>
 			<scope>test</scope>
@@ -187,10 +187,16 @@ under the License.
 
 		<dependency>
 			<groupId>org.powermock</groupId>
-			<artifactId>powermock-api-mockito</artifactId>
+			<artifactId>powermock-api-mockito2</artifactId>
 			<version>${powermock.version}</version>
 			<type>jar</type>
 			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>org.mockito</groupId>
+					<artifactId>mockito-core</artifactId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 
 		<dependency>
@@ -319,6 +325,20 @@ under the License.
 				<version>${hamcrest.version}</version>
 			</dependency>
 
+			<dependency>
+				<!-- mockito/powermock mismatch -->
+				<groupId>net.bytebuddy</groupId>
+				<artifactId>byte-buddy</artifactId>
+				<version>1.8.15</version>
+			</dependency>
+
+			<dependency>
+				<!-- mockito/powermock mismatch -->
+				<groupId>net.bytebuddy</groupId>
+				<artifactId>byte-buddy-agent</artifactId>
+				<version>1.8.15</version>
+			</dependency>
+
 			<!-- For dependency convergence -->
 			<dependency>
 				<groupId>org.objenesis</groupId>