/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.junit.util; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.Description; import org.junit.runner.notification.Failure; import org.mockito.internal.exceptions.ExceptionIncludingMockitoWarnings; import org.mockitoutil.TestBase; import static junit.framework.TestCase.assertEquals; import static org.assertj.core.api.Assertions.assertThat; public class JUnitFailureHackerTest extends TestBase { JUnitFailureHacker hacker = new JUnitFailureHacker(); @Test public void shouldReplaceException() throws Exception { //given RuntimeException actualExc = new RuntimeException("foo"); Failure failure = new Failure(Description.EMPTY, actualExc); //when hacker.appendWarnings(failure, "unused stubbing"); //then assertEquals(ExceptionIncludingMockitoWarnings.class, failure.getException().getClass()); assertEquals(actualExc, failure.getException().getCause()); Assertions.assertThat(actualExc.getStackTrace()).isEqualTo(failure.getException().getStackTrace()); } @Test public void shouldAppendWarning() throws Exception { Failure failure = new Failure(Description.EMPTY, new RuntimeException("foo")); //when hacker.appendWarnings(failure, "unused stubbing blah"); //then assertThat(failure.getException()).hasMessageContaining("unused stubbing blah"); } @Test public void shouldNotAppendWhenNoWarnings() throws Exception { RuntimeException ex = new RuntimeException("foo"); Failure failure = new Failure(Description.EMPTY, ex); //when hacker.appendWarnings(failure, ""); //then assertEquals(ex, failure.getException()); } @Test public void shouldNotAppendWhenNullWarnings() throws Exception { RuntimeException ex = new RuntimeException("foo"); Failure failure = new Failure(Description.EMPTY, ex); //when hacker.appendWarnings(failure, null); //then assertEquals(ex, failure.getException()); } @Test public void shouldPrintTheWarningSoICanSeeIt() throws Exception { Failure failure = new Failure(Description.EMPTY, new RuntimeException("foo")); //when hacker.appendWarnings(failure, "unused stubbing blah"); //then System.out.println(failure.getException()); } }