blob: e992f839f999419afa8827a33c4cc92d96e607c7 [file] [log] [blame]
/*
* Copyright (c) 2017 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.session;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoSession;
import org.mockito.exceptions.misusing.UnfinishedStubbingException;
import org.mockito.quality.Strictness;
import org.mockitousage.IMethods;
import org.mockitoutil.JUnitResultAssert;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
public class MockitoSessionTest {
private JUnitCore junit = new JUnitCore();
@Test public void session_without_any_configuration() {
//when
Result result = junit.run(MockitoSessionTest.SessionWithoutAnyConfiguration.class);
//expect
JUnitResultAssert.assertThat(result).succeeds(1);
}
@Test public void session_without_init_mocks_configured() {
//when
Result result = junit.run(MockitoSessionTest.SessionWithoutInitMocksConfigured.class);
//expect
JUnitResultAssert.assertThat(result).succeeds(1);
}
@Test public void session_without_strictness_configured() {
//when
Result result = junit.run(MockitoSessionTest.SessionWithoutStrictnessConfigured.class);
//expect
JUnitResultAssert.assertThat(result).succeeds(1);
}
@Test public void session_with_incorrect_mockito_usage() {
//when
Result result = junit.run(MockitoSessionTest.SessionWithIncorrectMockitoUsage.class);
//expect
JUnitResultAssert.assertThat(result).fails(1, UnfinishedStubbingException.class);
}
@Test public void reports_other_failure_and_incorrect_mockito_usage() {
//when
Result result = junit.run(MockitoSessionTest.SessionWithTestFailureAndIncorrectMockitoUsage.class);
//expect
JUnitResultAssert.assertThat(result)
.failsExactly(AssertionError.class, UnfinishedStubbingException.class);
}
public static class SessionWithoutAnyConfiguration {
@Mock IMethods mock;
//session without initMocks is not currently supported
MockitoSession mockito = Mockito.mockitoSession().startMocking();
@After public void after() {
mockito.finishMocking();
}
@Test public void some_test() {
assertNull(mock); //initMocks() was not used when configuring session
}
}
public static class SessionWithoutInitMocksConfigured {
@Mock IMethods mock;
MockitoSession mockito = Mockito.mockitoSession().strictness(Strictness.LENIENT).startMocking();
@After public void after() {
mockito.finishMocking();
}
@Test public void some_test() {
assertNull(mock); //initMocks() was not used when configuring session
}
}
public static class SessionWithoutStrictnessConfigured {
@Mock IMethods mock;
MockitoSession mockito = Mockito.mockitoSession().initMocks(this).startMocking();
@After public void after() {
mockito.finishMocking();
}
@Test public void some_test() {
assertNotNull(mock);
}
}
public static class SessionWithIncorrectMockitoUsage {
@Mock IMethods mock;
MockitoSession mockito = Mockito.mockitoSession().initMocks(this).startMocking();
@After public void after() {
mockito.finishMocking();
}
@Test public void unfinished_stubbing() {
when(mock.simpleMethod());
}
}
public static class SessionWithTestFailureAndIncorrectMockitoUsage {
@Mock IMethods mock;
MockitoSession mockito = Mockito.mockitoSession().initMocks(this).startMocking();
@After public void after() {
mockito.finishMocking();
}
@Test public void unfinished_stubbing_with_other_failure() {
when(mock.simpleMethod());
assertTrue(false);
}
}
}