使用SpringJUnit4ClassRunner和Mockito将模拟对象注入Aspect类

时间:2016-06-08 21:18:57

标签: java spring mockito aop

我有一个@RunWith(SpringJUnit4ClassRunner.class)的测试类,这个用来初始化mockito:

@Before
public void initMocks() {
    MockitoAnnotations.initMocks(this);
}

现在我有一个@Autowired字段来获取方面建议,但不能注入嘲笑。

我的方面:

@Autowired
private MyMock myMock;
@Around("execution(* xxx.MyService.aspectMethod(..))")
public void process(ProceedingJoinPoint joinPoint) throws Throwable {
    myMock.mockMethod();
}

我的测试班:

@RunWith(SpringJUnit4ClassRunner.class)
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class MyTest {

    @Autowired
    private MyService myService;
    @Mock
    private MyMock myMock;
    @InjectMocks
    private MyAspectClass;

    @Before
    public void initMocks() {
        MockitoAnnotations.initMocks(this);
    }    


    public void shouldXXXX() {

        doThrow(Exception.class).when(myMock).mockMethod();
        myService.aspectMethod();

        ....
    }

    ...
}

问题在于触发的方面与我嘲笑的方面不同。

1 个答案:

答案 0 :(得分:1)

答案就像

一样简单
@InjectMocks
    private MyAspectClass;