diff --git a/src/main/java/org/mockito/Mockito.java b/src/main/java/org/mockito/Mockito.java index a0502a6eec..8c1a0cff9b 100644 --- a/src/main/java/org/mockito/Mockito.java +++ b/src/main/java/org/mockito/Mockito.java @@ -2185,7 +2185,7 @@ public static MockedConstruction mockConstructionWithAnswer( context -> { if (context.getCount() == 1 || additionalAnswers.length == 0) { return withSettings().defaultAnswer(defaultAnswer); - } else if (context.getCount() >= additionalAnswers.length) { + } else if (context.getCount() > additionalAnswers.length) { return withSettings() .defaultAnswer(additionalAnswers[additionalAnswers.length - 1]); } else { diff --git a/subprojects/inline/src/test/java/org/mockitoinline/ConstructionMockTest.java b/subprojects/inline/src/test/java/org/mockitoinline/ConstructionMockTest.java index 4195080814..7eb87c5702 100644 --- a/subprojects/inline/src/test/java/org/mockitoinline/ConstructionMockTest.java +++ b/subprojects/inline/src/test/java/org/mockitoinline/ConstructionMockTest.java @@ -57,6 +57,19 @@ public void testConstructionMockDefaultAnswerMultiple() { } } + /** + * Tests issue #2544 + */ + @Test + public void testConstructionMockDefaultAnswerMultipleMoreThanTwo() { + try (MockedConstruction ignored = Mockito.mockConstructionWithAnswer(Dummy.class, invocation -> "bar", invocation -> "qux", invocation -> "baz")) { + assertEquals("bar", new Dummy().foo()); + assertEquals("qux", new Dummy().foo()); + assertEquals("baz", new Dummy().foo()); + assertEquals("baz", new Dummy().foo()); + } + } + @Test public void testConstructionMockPrepared() { try (MockedConstruction ignored = Mockito.mockConstruction(Dummy.class, (mock, context) -> when(mock.foo()).thenReturn("bar"))) {