Я пишу службу Rest с использованием Spring MVC. Вот контур класса:
 @Controller
 public class MyController{
     @RequestMapping(..)
     public void myMethod(...) throws NotAuthorizedException{...}
     @ExceptionHandler(NotAuthorizedException.class)
     @ResponseStatus(value=HttpStatus.UNAUTHORIZED, reason="blah")
     public void handler(...){...}
 }
Я написал свои модульные тесты, используя дизайн здесь. Тест в основном выглядит следующим образом:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(....)
public class mytest{
    MockHttpServletRequest requestMock;
    MockHttpServletResponse responseMock;
    AnnotationMethodHandlerAdapter handlerAdapter;
@Before
public void setUp() {
    requestMock = new MockHttpServletRequest();
    requestMock.setContentType(MediaType.APPLICATION_JSON_VALUE);
    requestMock.addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
    responseMock = new MockHttpServletResponse();
    handlerAdapter = new AnnotationMethodHandlerAdapter();
}
@Test
public void testExceptionHandler(){
    // setup ....
    handlerAdapter.handle(...);
    // verify
    // I would like to do the following
    assertThat(responseMock.getStatus(), is(HttpStatus.UNAUTHORIZED.value()));
}
}
Однако вызов handle вызывает NotAuthorizedException. Я прочитал, что по дизайну, чтобы иметь возможность unit test, чтобы метод выбрал соответствующее исключение, однако я хотел бы написать автоматизированный тест, чтобы структура обрабатывала это исключение соответствующим образом и что тестируемый класс реализовал обработчик соответственно. Есть ли способ сделать это?
Помните, что у меня нет доступа к фактическому коду в месте, где я мог бы его опубликовать.
Кроме того, я ограничен (по несчастью) до Spring 3.0.5 или 3.1.2.
