package org.mockitousage.testng; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.testng.MockitoTestNGListener; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import java.util.HashMap; import java.util.List; import java.util.Observable; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @Listeners(MockitoTestNGListener.class) public class MockFieldsShouldBeResetBetweenTestMethodsTest { @Mock List<String> list; @Spy HashMap hashMap; @InjectMocks SomeType someType; @Mock Observable will_be_nulled; @Test public void behaviour_A_without_infection_from_behaviour_B() throws Exception { // verify mock is clean assertThat(list.get(0)).isNull(); verify(list, never()).add(anyString()); // local behaviour A given(list.get(0)).willReturn("A"); assertThat(list.get(0)).isEqualTo("A"); list.add("something else after A"); } @Test public void behaviour_B_without_infection_from_behaviour_A() throws Exception { // verify mock is clean assertThat(list.get(0)).isNull(); verify(list, never()).add(anyString()); // local behaviour A given(list.get(0)).willReturn("B"); assertThat(list.get(0)).isEqualTo("B"); list.add("something else after B"); } @Test public void dont_fail_when_reseting_null_field() throws Exception { will_be_nulled = null; } }