Why is this an issue?

Mockito provides argument matchers for flexibly stubbing or verifying method calls.

Mockito.verify(), Mockito.when(), Stubber.when() and BDDMockito.given() each have overloads with and without argument matchers.

However, the default matching behavior (i.e. without argument matchers) uses equals(). If only the matcher org.mockito.ArgumentMatchers.eq() is used, the call is equivalent to the call without matchers, i.e. the eq() is not necessary and can be omitted. The resulting code is shorter and easier to read.

Noncompliant code example

@Test
public void myTest() {
  given(foo.bar(eq(v1), eq(v2), eq(v3))).willReturn(null);   // Noncompliant
  when(foo.baz(eq(v4), eq(v5))).thenReturn("foo");   // Noncompliant
  doThrow(new RuntimeException()).when(foo).quux(eq(42));    // Noncompliant
  verify(foo).bar(eq(v1), eq(v2), eq(v3));   // Noncompliant
}

Compliant solution

@Test
public void myTest() {
  given(foo.bar(v1, v2, v3)).willReturn(null);
  when(foo.baz(v4, v5)).thenReturn("foo");
  doThrow(new RuntimeException()).when(foo).quux(42);
  verify(foo).bar(v1, v2, v3);
}

Resources