Ich habe eine @aspect, die die Ausführung aller meiner Controller Aktion Methoden webt. Es funktioniert gut, wenn ich das System laufen lasse, aber nicht im Komponententest(). Ich verwende Mockito einen JUnit in der folowing Weise:Spring AOP Aspekt funktioniert nicht mit Mockito
...
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:**/spring-context.xml")
@WebAppConfiguration
public class UserControllerTest {
private MockMvc mockMvc;
@Mock
private RoleService roleService;
@InjectMocks
private UserController userController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
...
mockMvc = MockMvcBuilders.standaloneSetup(userController).build();
}
...
}
mit einigem @Test mockMvc.perform()
verwenden.
Und mein Aspect ist:
@Pointcut("within(@org.springframework.stereotype.Controller *)")
public void controller() { }
@Pointcut("execution(* mypackage.controller.*Controller.*(..))")
public void methodPointcut() { }
@Around("controller() && methodPointcut()")
...
Ich habe das gleiche Problem. Ich habe bemerkt, dass Aspekte feuern, wenn Sie das alternative '' 'webAppContextSetup''' anstelle von' '' standaloneSetup''' verwenden, aber in diesem Fall werden die Mocks nicht in den Controller injiziert. Ich muss noch herausfinden, wie Sie beide arbeiten –