Last week I wrote about a minimal Spring Security Context setup for unit testing.
I’d like to add just a tiny, yet depending on your use case perhaps quite important, tidbit to that: In case you need to reset a SecurityContext
setup, e.g., a mocked user authentication, because, for instance, other test methods from the same unit test class verify behaviour for an unauthenticated application state and hence expect an anonymous user, you can clear the SecurityContext
(for example, in your test class’ tearDown method annotated with @AfterEach from JUnit’s Jupiter API):
1 2 3 4 5 6 | @AfterEach void tearDown() { SecurityContextHolder.clearContext(); } |
Depending on how your test context is cached, an existing SecurityContext
might also affect your other unit test classes, which is why resetting the environment set up for a particular unit test after that test has been executed is a good idea and accepted best practice anyway.
Again, see this excellent article by Spring testing expert Philip Riecks on the matter: Improve Build Times with Context Caching from Spring Test
One comment