/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockitousage.verification; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.exceptions.verification.TooLittleActualInvocations; import org.mockito.exceptions.verification.TooManyActualInvocations; import org.mockitoutil.TestBase; import java.util.LinkedList; import static junit.framework.TestCase.fail; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.times; @SuppressWarnings("unchecked") public class DescriptiveMessagesWhenTimesXVerificationFailsTest extends TestBase { @Mock private LinkedList mock; @Test public void shouldVerifyActualNumberOfInvocationsSmallerThanWanted() throws Exception { mock.clear(); mock.clear(); mock.clear(); Mockito.verify(mock, times(3)).clear(); try { Mockito.verify(mock, times(100)).clear(); fail(); } catch (TooLittleActualInvocations e) { assertThat(e) .hasMessageContaining("mock.clear();") .hasMessageContaining("Wanted 100 times") .hasMessageContaining("was 3"); } } @Test public void shouldVerifyActualNumberOfInvocationsLargerThanWanted() throws Exception { mock.clear(); mock.clear(); mock.clear(); mock.clear(); Mockito.verify(mock, times(4)).clear(); try { Mockito.verify(mock, times(1)).clear(); fail(); } catch (TooManyActualInvocations e) { assertThat(e) .hasMessageContaining("mock.clear();") .hasMessageContaining("Wanted 1 time") .hasMessageContaining("was 4"); } } }