D'écriture de test JUnit pour @ExceptionHandler

Je suis en train d'écrire un Repos de service à l'aide de Spring MVC. Voici le plan de la classe:

 @Controller
 public class MyController{

     @RequestMapping(..)
     public void myMethod(...) throws NotAuthorizedException{...}

     @ExceptionHandler(NotAuthorizedException.class)
     @ResponseStatus(value=HttpStatus.UNAUTHORIZED, reason="blah")
     public void handler(...){...}
 }

J'ai écrit mes tests unitaires à l'aide de la conception posté ici. Le test est fondamentalement comme suit:

@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()));
}

}

Toutefois, l'appel à handle est de lancer le NotAuthorizedException. J'ai lu que c'est par la conception pour être en mesure de test de l'unité que la méthode renvoie l'exception appropriée, cependant, j'aimerais écrire un test automatisé que le cadre est de la manipulation de cette exception de façon appropriée et que la classe sous test a mis en oeuvre le gestionnaire de façon appropriée. Est-il un moyen de faire cela?

S'il vous plaît être conscient que je n'ai pas accès au code actuel dans un endroit où je pourrais le poster.

Aussi, je suis limité (pour des raisons malheureuses) de Printemps 3.0.5 ou 3.1.2.

En général, je dirais de tester votre propre code, pas le cadre.
Je suggère que les tests de dépistage de la présence d' @ExceptionHandler et que j'ai configuré le cadre correctement via un test automatisé est précieux.
Certes, mais qui pourrait être au-delà de la portée d'une unité de test. Rappelons qu'en plus de vos jUnit test, vous allez avoir besoin d'un correctement configuré printemps fichier de configuration. De Plus, vos tests peuvent avoir à changer une fois que vous avez mise à niveau au Printemps. En général, j'ai constaté que si j'ai configuré le cadre correctement une fois, j'ai tendance à configurer correctement partout, ou bien il y a un peu fail rapide qui se produit immédiatement lorsque j'essaie de déployer mon application.
Vous pouvez également envisager que le cadre lui-même a une liste exhaustive des tests unitaires, qui est disponible pour votre inspection à tout moment.
Je dirais que ce que je suis en train de tester n'est pas le cadre, mais que j'ai les annotations mis en place correctement. C'est ce qui est le cône dans le cas de @RequestMapping à l'aide de la AnnotationMethodHandlerAdapter. Je suis à la recherche pour le même genre de test de mon @ExceptionHandler annotation, un test automatisé que le code de réponse est renvoyée avec le message approprié. Ce n'est pas de tester le framework, mais mon code. Je pourrais faire la réflexion à regarder pour les annotations dans la classe et vérifier qu'ils sont corrects, mais il semble comme il devrait y avoir une meilleure façon.

OriginalL'auteur John B | 2013-01-30