/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockitousage.annotation; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.junit.MockitoJUnitRunner; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; @RunWith(MockitoJUnitRunner.class) public class InjectionOfInlinedMockDeclarationTest { @InjectMocks private Receiver receiver; @InjectMocks private Receiver spiedReceiver = spy(new Receiver()); private Antenna oldAntenna = mock(Antenna.class); private Antenna satelliteAntenna = mock(Antenna.class); private Antenna antenna = mock(Antenna.class, "dvbtAntenna"); private Tuner tuner = spy(new Tuner()); @Test public void mock_declared_fields_shall_be_injected_too() throws Exception { assertNotNull(receiver.oldAntenna); assertNotNull(receiver.satelliteAntenna); assertNotNull(receiver.dvbtAntenna); assertNotNull(receiver.tuner); } @Test public void unnamed_mocks_should_be_resolved_withe_their_field_names() throws Exception { assertSame(oldAntenna, receiver.oldAntenna); assertSame(satelliteAntenna, receiver.satelliteAntenna); } @Test public void named_mocks_should_be_resolved_with_their_name() throws Exception { assertSame(antenna, receiver.dvbtAntenna); } @Test public void inject_mocks_even_in_declared_spy() throws Exception { assertNotNull(spiedReceiver.oldAntenna); assertNotNull(spiedReceiver.tuner); } // note that static class is not private !! static class Receiver { Antenna oldAntenna; Antenna satelliteAntenna; Antenna dvbtAntenna; Tuner tuner; public boolean tune() { return true; } } private static class Antenna { } private static class Tuner { } }