| /* |
| * 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); |
| } |
| } |
| } |