Я согласен с комментарием @ skaffman.
Кроме того, в вашем тесте используется MockitoJUnitRunner
, поэтому он не будет искать какой-либо материал Spring, это единственная цель - инициализировать mockito mocks.ContextConfiguration
недостаточно, чтобы связать вещи с пружиной.Технически с JUnit вы можете использовать следующий бегун, если вы хотите что-то связанное с пружиной: SpringJUnit4ClassRunner
.
Также, когда вы пишете Unit Test , вы можете пересмотреть использование пружины.Использование пружинной проводки в модульном тесте не правильно.Однако если вы вместо этого пишете Integration Test , то почему вы используете Mockito там, это не имеет смысла (как сказал skaffman)!
EDIT: Теперь в вашем коде вы прямо устанавливаете CustomerServiceImpl
в блоке before, что также не имеет смысла.Spring вообще не задействован!
@Before
public void setup() {
customService = new CustomServiceImpl();
Setter.set(customService, "dataService", dataService);
}
EDIT 2: Если вы хотите написать Unit Test из CustomerServiceImpl
, тогда избегайте Spring ивпрыскивать непосредственно стоимость имущества.Кроме того, вы можете использовать Mockito для вставки макета DataService
в тестируемый экземпляр.
@RunWith(MockitoJUnitRunner.class)
public CustomServiceImplTest{
@InjectMocks private CustomServiceImpl customService;
@Mock private DataService dataService;
@Before void inject_url() { customerServiceImpl.url = "http://..."; }
@Test public void customerService_should_delegate_to_dataService() { ... }
}
Как вы могли заметить, я использую прямой доступ к полю url
, поле может бытьпакет виден.Это тестовый обходной путь для фактического введения значения URL, так как Mockito вводит только макеты.