blob: 8ae318b5762c6f7c423544a865a5371a3f6a78b2 [file] [log] [blame]
package org.mockito.internal.junit;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.exceptions.misusing.UnfinishedStubbingException;
import org.mockito.junit.MockitoJUnit;
import org.mockitousage.IMethods;
import org.mockitoutil.SafeJUnitRule;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mockingDetails;
import static org.mockito.Mockito.when;
public class JUnitRuleTest {
@Rule public SafeJUnitRule rule = new SafeJUnitRule(MockitoJUnit.rule());
@Mock IMethods mock;
@Test public void injects_into_test_case() throws Throwable {
assertTrue(mockingDetails(mock).isMock());
}
@Test
public void rethrows_exception() throws Throwable {
rule.expectFailure(RuntimeException.class, "foo");
throw new RuntimeException("foo");
}
@Test
public void detects_invalid_mockito_usage_on_success() throws Throwable {
rule.expectFailure(UnfinishedStubbingException.class);
when(mock.simpleMethod());
}
@Test
public void does_not_check_invalid_mockito_usage_on_failure() throws Throwable {
//This intended behavior is questionable
//However, it was like that since the beginning of JUnit rule support
//Users never questioned this behavior. Hence, let's stick to it unless we have more data
rule.expectFailure(RuntimeException.class, "foo");
Mockito.when(mock.simpleMethod()); // <--- unfinished stubbing
throw new RuntimeException("foo"); // <--- some failure
}
}