我有一个带有@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();

        ....
    }

    ...
}


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

最佳答案

答案很简单

@InjectMocks
    private MyAspectClass;

09-26 14:29