| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockitousage.bugs.injection; |
| |
| import org.junit.Before; |
| import org.junit.Ignore; |
| import org.junit.Test; |
| import org.mockito.InjectMocks; |
| import org.mockito.Mock; |
| import org.mockito.MockitoAnnotations; |
| |
| import static org.junit.Assert.assertNotNull; |
| |
| // issue 229 : @Mock fields in super test class are not injected on @InjectMocks fields |
| public class ParentTestMockInjectionTest { |
| |
| @Test |
| public void injectMocksShouldInjectMocksFromTestSuperClasses() { |
| ImplicitTest it = new ImplicitTest(); |
| MockitoAnnotations.initMocks(it); |
| |
| assertNotNull(it.daoFromParent); |
| assertNotNull(it.daoFromSub); |
| assertNotNull(it.sut.daoFromParent); |
| assertNotNull(it.sut.daoFromSub); |
| } |
| |
| @Ignore |
| public static abstract class BaseTest { |
| @Mock protected DaoA daoFromParent; |
| } |
| |
| @Ignore("JUnit test under test : don't test this!") |
| public static class ImplicitTest extends BaseTest { |
| @InjectMocks private TestedSystem sut = new TestedSystem(); |
| |
| @Mock private DaoB daoFromSub; |
| |
| @Before |
| public void setup() { |
| MockitoAnnotations.initMocks(this); |
| } |
| |
| @Test |
| public void noNullPointerException() { |
| sut.businessMethod(); |
| } |
| } |
| |
| public static class TestedSystem { |
| private DaoA daoFromParent; |
| private DaoB daoFromSub; |
| |
| public void businessMethod() { |
| daoFromParent.doQuery(); |
| daoFromSub.doQuery(); |
| } |
| } |
| |
| |
| public static class DaoA { |
| public void doQuery() { } |
| } |
| |
| public static class DaoB { |
| public void doQuery() { } |
| } |
| |
| } |