/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockitousage.stacktrace; import org.junit.After; import org.junit.Test; import org.mockito.Mock; import org.mockito.exceptions.misusing.InvalidUseOfMatchersException; import org.mockito.exceptions.misusing.UnfinishedStubbingException; import org.mockito.exceptions.misusing.UnfinishedVerificationException; import org.mockitousage.IMethods; import org.mockitoutil.TestBase; import static org.junit.Assert.fail; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.*; public class ClickableStackTracesWhenFrameworkMisusedTest extends TestBase { @Mock private IMethods mock; @After public void resetState() { super.resetState(); } private void misplacedArgumentMatcherHere() { anyString(); } @Test public void shouldPointOutMisplacedMatcher() { misplacedArgumentMatcherHere(); try { verify(mock).simpleMethod(); fail(); } catch (InvalidUseOfMatchersException e) { assertThat(e) .hasMessageContaining("-> at ") .hasMessageContaining("misplacedArgumentMatcherHere("); } } @SuppressWarnings({"MockitoUsage", "CheckReturnValue"}) private void unfinishedStubbingHere() { when(mock.simpleMethod()); } @Test public void shouldPointOutUnfinishedStubbing() { unfinishedStubbingHere(); try { verify(mock).simpleMethod(); fail(); } catch (UnfinishedStubbingException e) { assertThat(e) .hasMessageContaining("-> at ") .hasMessageContaining("unfinishedStubbingHere("); } } @Test public void shouldShowWhereIsUnfinishedVerification() throws Exception { unfinishedVerificationHere(); try { mock(IMethods.class); fail(); } catch (UnfinishedVerificationException e) { assertThat(e).hasMessageContaining("unfinishedVerificationHere("); } } @SuppressWarnings({"MockitoUsage", "CheckReturnValue"}) private void unfinishedVerificationHere() { verify(mock); } }