All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mockito.session.MockitoSessionBuilder Maven / Gradle / Ivy

There is a newer version: 5.12.0
Show newest version
/*
 * Copyright (c) 2017 Mockito contributors
 * This program is made available under the terms of the MIT License.
 */
package org.mockito.session;

import org.mockito.Incubating;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoSession;
import org.mockito.exceptions.misusing.UnfinishedMockingSessionException;
import org.mockito.quality.Strictness;

/**
 * Fluent builder interface for {@code MockitoSession} objects.
 * See the documentation and examples in Javadoc for {@link MockitoSession}.
 *
 * @since 2.7.0
 */
@Incubating
public interface MockitoSessionBuilder {

    /**
     * Configures the test class instance for initialization of fields annotated with Mockito annotations
     * like {@link org.mockito.Mock}.
     * When this method is invoked it does not perform initialization of mocks on the spot!
     * Only when {@link #startMocking()} is invoked then annotated fields will be initialized.
     * Traditional API to initialize mocks, the {@link MockitoAnnotations#initMocks(Object)} method
     * has limited support for driving cleaner tests because it does not support configuring {@link Strictness}.
     * Want cleaner tests and better productivity?
     * Migrate from {@link MockitoAnnotations#initMocks(Object)}
     * to {@link MockitoSession}!
     * 

* See code sample in {@link MockitoSession}. * * @param testClassInstance test class instance that contains fields with Mockito annotations to be initialized. * Passing {@code null} is permitted and will make the session use a default value. * The current default is '{@code new Object()}'. * @return the same builder instance for fluent configuration of {@code MockitoSession}. * @since 2.7.0 */ @Incubating MockitoSessionBuilder initMocks(Object testClassInstance); /** * Configures strictness of {@code MockitoSession} instance. * See examples in {@link MockitoSession}. * * @param strictness for {@code MockitoSession} instance. * Passing {@code null} is permitted and will make the session use a default value. * The current default is {@link Strictness#STRICT_STUBS}. * * @return the same builder instance for fluent configuration of {@code MockitoSession}. * @since 2.7.0 */ @Incubating MockitoSessionBuilder strictness(Strictness strictness); /** * Starts new mocking session! Creates new {@code MockitoSession} instance to initialize the session. * At this point annotated fields are initialized per {@link #initMocks(Object)} method. * When you are done with the session it is required to invoke {@link MockitoSession#finishMocking()}. * This will trigger stubbing validation, cleaning up the internal state like removal of internal listeners. *

* Mockito tracks created sessions internally and prevents the user from creating new sessions without * using {@link MockitoSession#finishMocking()}. * When you run tests concurrently in multiple threads, it is legal for each thread to have single active Mockito session. * When you attempt to start new session in a thread that already has an unfinished session * {@link UnfinishedMockingSessionException} will be triggered. *

* See examples in {@link MockitoSession}. * * @return new {@code MockitoSession} instance * @since 2.7.0 * @throws UnfinishedMockingSessionException * when previous session was not concluded with {@link MockitoSession#finishMocking()} */ @Incubating MockitoSession startMocking() throws UnfinishedMockingSessionException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy