Unit Testing Support Classes
Spring includes a number of classes that can help with unit testing. They fall into two categories:
General Testing Utilities
The org.springframework.test.util package contains several general purpose utilities
for use in unit and integration testing.
ReflectionTestUtils is a collection of reflection-based utility methods. You can use
these methods in testing scenarios where you need to change the value of a constant, set
a non-public field, invoke a non-public setter method, or invoke a non-public
configuration or lifecycle callback method when testing application code for use cases
such as the following:
-
ORM frameworks (such as JPA and Hibernate) that condone
privateorprotectedfield access as opposed topublicsetter methods for properties in a domain entity. -
Spring’s support for annotations (such as
@Autowired,@Inject, and@Resource), that provide dependency injection forprivateorprotectedfields, setter methods, and configuration methods. -
Use of annotations such as
@PostConstructand@PreDestroyfor lifecycle callback methods.
AopTestUtils is a collection of
AOP-related utility methods. You can use these methods to obtain a reference to the
underlying target object hidden behind one or more Spring proxies. For example, if you
have configured a bean as a dynamic mock by using a library such as EasyMock or Mockito,
and the mock is wrapped in a Spring proxy, you may need direct access to the underlying
mock to configure expectations on it and perform verifications. For Spring’s core AOP
utilities, see AopUtils and
AopProxyUtils.
Spring MVC Testing Utilities
The org.springframework.test.web package contains
ModelAndViewAssert, which you
can use in combination with JUnit, TestNG, or any other testing framework for unit tests
that deal with Spring MVC ModelAndView objects.
|
Unit testing Spring MVC Controllers
To unit test your Spring MVC Controller classes as POJOs, use ModelAndViewAssert
combined with MockHttpServletRequest, MockHttpSession, and so on from Spring’s
Servlet API mocks. For thorough integration testing of your
Spring MVC and REST Controller classes in conjunction with your WebApplicationContext
configuration for Spring MVC, use the
Spring MVC Test Framework instead.
|