/* * Copyright (c) 2016 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.exceptions.stacktrace; import org.mockito.exceptions.stacktrace.StackTraceCleaner; /** * This predicate is used to filter "good" {@link StackTraceElement}. Good */ public class DefaultStackTraceCleaner implements StackTraceCleaner { @Override public boolean isIn(StackTraceElement e) { if (isFromMockitoRunner(e.getClassName()) || isFromMockitoRule(e.getClassName())) { return true; } else if (isMockDispatcher(e.getClassName()) || isFromMockito(e.getClassName())) { return false; } else { return true; } } private static boolean isMockDispatcher(String className) { return (className.contains("$$EnhancerByMockitoWithCGLIB$$") || className.contains("$MockitoMock$")); } private static boolean isFromMockito(String className) { return className.startsWith("org.mockito."); } private static boolean isFromMockitoRule(String className) { return className.startsWith("org.mockito.internal.junit.JUnitRule"); } private static boolean isFromMockitoRunner(String className) { return className.startsWith("org.mockito.internal.runners.") || className.startsWith("org.mockito.runners.") || className.startsWith("org.mockito.junit."); } }