2014-11-05 3 views
3

могли бы вы помочь мне, пожалуйста, код:@InjectMocks @Autowired вместе выпускать

@ContextConfiguration(locations = { "/applicationContext.xml" }) 
@RunWith(SpringJUnit4ClassRunner.class) 
public class TestUnit2 { 

    @Mock 
    private MongoOperations mongoTemplate; 

    @InjectMocks 
    @Autowired 
    private WorkcircleRepositoryMongoImpl workCircleRepository; 

    @Autowired 
    private WorkcircleServiceImpl workCircleServiceImpl; 

    @Before 
    public void setUp() { 

    .... 
    when(mongoTemplate.findOne(new Query(), Person.class)).thenReturn(expectedPerson); 
    MockitoAnnotations.initMocks(this); 
    } 

    @Test 
    public void test() { 

    ... workCircleServiceImpl.find()... 

    } 

Но тест провален:
NP в "... ... workCircleServiceImpl.find()" линии,

по-отдельности @InjectMocks & @Поддержка работы, но вместе не работает.

+0

Я думаю, что вы должны использовать только один из '@ InjectMocks' и' @ Autowired' ... – Xstian

ответ

7

Обычно, когда вы тестируете устройство, вы не должны инициализировать контекст Spring. Так что удалите Autowiring.

Обычно, когда вы проводите интеграционное тестирование, вы должны использовать реальные зависимости. Так что удалите насмешливость.

Здесь вы смешиваете интеграцию и модульный тест.

Смежные вопросы