/* * Copyright (c) 2016 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.junit; import org.junit.runner.Description; import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunNotifier; import org.mockito.internal.exceptions.Reporter; import org.mockito.invocation.Invocation; import org.mockito.listeners.MockCreationListener; import org.mockito.mock.MockCreationSettings; import java.util.Collection; import java.util.LinkedList; import java.util.List; /** * Reports unnecessary stubbings */ public class UnnecessaryStubbingsReporter implements MockCreationListener { private List<Object> mocks = new LinkedList<Object>(); public void validateUnusedStubs(Class<?> testClass, RunNotifier notifier) { Collection<Invocation> unused = new UnusedStubbingsFinder().getUnusedStubbingsByLocation(mocks); if (unused.size() == 0) { return; //whoa!!! All stubbings were used! } //Oups, there are unused stubbings Description unnecessaryStubbings = Description.createTestDescription(testClass, "unnecessary Mockito stubbings"); notifier.fireTestFailure(new Failure(unnecessaryStubbings, Reporter.formatUnncessaryStubbingException(testClass, unused))); } @Override public void onMockCreated(Object mock, MockCreationSettings settings) { mocks.add(mock); } }