【发布时间】:2013-06-03 17:26:13
【问题描述】:
我有一个@Aspect,它编织了我所有控制器操作方法的执行。当我运行系统时它工作正常,但在单元测试中却不行。我通过以下方式使用 Mockito 和 junit:
@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();
}
...
}
一些@Test 使用mockMvc.perform()。
我的观点是:
@Pointcut("within(@org.springframework.stereotype.Controller *)")
public void controller() { }
@Pointcut("execution(* mypackage.controller.*Controller.*(..))")
public void methodPointcut() { }
@Around("controller() && methodPointcut()")
...
【问题讨论】:
-
我也有同样的问题。我注意到如果您使用备用
webAppContextSetup而不是standaloneSetup,方面会触发,但在这种情况下,模拟不会注入控制器。我还没有弄清楚如何让两者都工作