blob: 0b4c9239b407cda37ff8ab0a79371205785f9dc4 [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.verification;
import org.mockito.Mockito;
/**
* VerificationWithTimeout is a {@link VerificationMode} that allows combining existing verification modes with 'timeout'. E.g:
*
* <pre class="code"><code class="java">
* verify(mock, timeout(100).times(5)).foo();
*
* verify(mock, timeout(100).never()).bar();
*
* verify(mock, timeout(200).atLeastOnce()).baz();
* </code></pre>
*
* <p>
* See examples in javadoc for {@link Mockito#verify(Object, VerificationMode)}
*/
public interface VerificationWithTimeout extends VerificationMode {
/**
* Allows verifying exact number of invocations within given timeout
* <pre class="code"><code class="java">
* verify(mock, timeout(100).times(2)).someMethod("some arg");
* </code></pre>
*
* See examples in javadoc for {@link Mockito} class
*
* @param wantedNumberOfInvocations wanted number of invocations
*
* @return verification mode
*/
public VerificationMode times(int wantedNumberOfInvocations);
/**
* Alias to times(0), see {@link #times(int)}
* <p>
* Verifies that interaction did not happen within given timeout. E.g:
* <pre class="code"><code class="java">
* verify(mock, timeout(100).never()).someMethod();
* </code></pre>
*
* <p>
* If you want to verify there were NO interactions with the mock
* check out {@link Mockito#verifyNoMoreInteractions(Object...)}
* <p>
* See examples in javadoc for {@link Mockito} class
*
* @return verification mode
*/
public VerificationMode never();
/**
* Allows at-least-once verification withing given timeout. E.g:
* <pre class="code"><code class="java">
* verify(mock, timeout(100).atLeastOnce()).someMethod("some arg");
* </code></pre>
* Alias to atLeast(1)
* <p>
* See examples in javadoc for {@link Mockito} class
*
* @return verification mode
*/
public VerificationMode atLeastOnce();
/**
* Allows at-least-x verification withing given timeout. E.g:
* <pre class="code"><code class="java">
* verify(mock, timeout(100).atLeast(3)).someMethod("some arg");
* </code></pre>
*
* See examples in javadoc for {@link Mockito} class
*
* @param minNumberOfInvocations minimum number of invocations
*
* @return verification mode
*/
public VerificationMode atLeast(int minNumberOfInvocations);
/**
* @deprecated
*
* <b>Deprecated</b>
* validation with timeout combined with atMost simply does not make sense...
* The test would have passed immediately in the concurrent environment
* <p>
* To avoid compilation erros upon upgrade the method is deprecated and it throws a "friendly reminder" exception.
* <p>
* In future release we will remove timeout(x).atMost(y) from the API.
* <p>
* Do you want to find out more? See <a href="http://code.google.com/p/mockito/issues/detail?id=235">issue 235</a>
*
* @return verification mode
*/
@Deprecated
public VerificationMode atMost(int maxNumberOfInvocations);
/**
* Allows checking if given method was the only one invoked. E.g:
* <pre class="code"><code class="java">
* verify(mock, only()).someMethod();
* //above is a shorthand for following 2 lines of code:
* verify(mock).someMethod();
* verifyNoMoreInvocations(mock);
* </code></pre>
*
* <p>
* See also {@link Mockito#verifyNoMoreInteractions(Object...)}
* <p>
* See examples in javadoc for {@link Mockito} class
*
* @return verification mode
*/
public VerificationMode only();
}