@InjectMocks @Autowired在一起发行

时间:2014-11-05 12:52:35

标签: java spring annotations mockito 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& @Autowired工作,但一起工作不起作用。

1 个答案:

答案 0 :(得分:8)

通常在进行单元测试时,不应初始化Spring上下文。 因此,请删除自动装配。

通常在进行集成测试时,您应该使用真正的依赖项。 所以删除模拟。

您正在混合集成和单元测试。