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
private
orprotected
field access as opposed topublic
setter methods for properties in a domain entity. -
Spring’s support for annotations (such as
@Autowired
,@Inject
, and@Resource
), that provide dependency injection forprivate
orprotected
fields, setter methods, and configuration methods. -
Use of annotations such as
@PostConstruct
and@PreDestroy
for 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.
|