写单元测试自定义注释?

时间:2015-10-07 23:06:44

标签: java spring unit-testing annotations spring-annotations

我有一个Java Spring方法,我想测试看起来像这样:

@RunWithPermission(values={Permission.Manage, Permissions.ManageAll}, any=true)
@RequestMapping(method = RequestMethod.POST)
public Object createReport(@RequestBody ReportParam definition) throws Exception {
    ...
    return reportManager.createReport(definition);
}

现在我的功能只有在用户有Permission.ManagePermission.ManageAll时才能运行,但如果用户拥有Permission.View等权限则无法运行。我想编写一个测试它的单元测试,所以我尝试了这样的事情:

@Autowired
@InjectMocks
private RestReportController controller;
...
@Test()
@RunWithPermission(values={Permissions.View}, any=true)
public void testCreateReportPermissions() throws Exception {
    ReportParam param = getReportParam("report_param.json");
    param.setLabelIds(Arrays.asList(labelService.getHomeId()));
    controller.createReport(param);
}

编辑:尝试2:我还尝试创建某种虚假的用户会话,看看我是否可以在测试期间“设置”权限,但这似乎也不起作用。

@Test()
public void testCreateReportPermissions() throws Exception{
    ReportParam param = getReportParam("report_param.json");
    param.setLabelIds(Arrays.asList(labelService.getHomeId()));
    sessionManager.clearUserSession();
    userSession = TestUtils.createFakeSession("testuser001", "1000", Permissions.View);
    sessionManager.setUserSession(userSession);
    controller.createReport(param);
}

然而,正如我的测试所见,它创建了报告并且单元测试结束。但是,有没有办法让它抛出某种错误或异常,因为我使用Permission.View的权限注释了该方法?如果有人可以提供帮助,那就太好了。谢谢!

0 个答案:

没有答案