Home | History | Annotate | Download | only in plugins
      1 /*
      2  * Copyright (c) 2017 Mockito contributors
      3  * This program is made available under the terms of the MIT License.
      4  */
      5 package org.mockito.plugins;
      6 
      7 import org.mockito.Mockito;
      8 import org.mockito.MockitoFramework;
      9 
     10 /**
     11  * Instance of this interface is available via {@link MockitoFramework#getPlugins()}.
     12  * This object enables framework integrators to get access to default Mockito plugins.
     13  * <p>
     14  * Example use case: one needs to implement custom {@link MockMaker}
     15  * and delegate some behavior to the default Mockito implementation.
     16  * The interface was introduced to help framework integrations.
     17  *
     18  * @since 2.10.0
     19  */
     20 public interface MockitoPlugins {
     21 
     22     /**
     23      * Returns the default plugin implementation used by Mockito.
     24      * Mockito plugins are stateless so it is recommended to keep hold of the returned plugin implementation
     25      * rather than calling this method multiple times.
     26      * Each time this method is called, new instance of the plugin is created.
     27      *
     28      * @param pluginType type of the plugin, for example {@link MockMaker}.
     29      * @return the plugin instance
     30      * @since 2.10.0
     31      */
     32     <T> T getDefaultPlugin(Class<T> pluginType);
     33 
     34     /**
     35      * Returns inline mock maker, an optional mock maker that is bundled with Mockito distribution.
     36      * This method is needed because {@link #getDefaultPlugin(Class)} does not provide an instance of inline mock maker.
     37      * Creates new instance each time is called so it is recommended to keep hold of the resulting object for future invocations.
     38      * For more information about inline mock maker see the javadoc for main {@link Mockito} class.
     39      *
     40      * @return instance of inline mock maker
     41      * @since 2.10.0
     42      */
     43     MockMaker getInlineMockMaker();
     44 }
     45