In case you want to test only your code and not Spring configuration, it is possible to use Spring-free configuration.
public class AirlineWsClient3Test { private static final long TICKET_ID = 123456L; private static final Calendar DEPARTURE_TIME = Calendar.getInstance(); private static final String FLIGHT_NUMBER = "OK1234"; private AirlineWsClient client; private WebServiceTemplate webServiceTemplate; private Passenger[] createPassengers() { return new Passenger[]{new Passenger("Joe","Smith"), new Passenger("John","Doe")}; } @Test public void testCall() { Passenger[] passengers = createPassengers(); //create control WsMockControl mockControl = new WsMockControl(); //teach mock what to do and create it WebServiceMessageSender mockMessageSender = mockControl .validateSchema("xsd/messages.xsd", "xsd/types.xsd") .expectRequest("mock-xml/www.csa.cz/BookFlightRequest/OK1234-request.xml") .returnResponse("mock-xml/www.csa.cz/BookFlightRequest/OK1234-response.xml") .createMock(); webServiceTemplate.setMessageSender(mockMessageSender); long ticketId = client.bookFlight(FLIGHT_NUMBER, passengers, DEPARTURE_TIME); assertEquals(TICKET_ID, ticketId); mockControl.verify(); } @Before public void setUp() throws Exception { client = new AirlineWsClient(); webServiceTemplate = new WebServiceTemplate(); Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setContextPath("net.javacrumbs.airline.aggregator.jaxb"); marshaller.afterPropertiesSet(); webServiceTemplate.setMarshaller(marshaller); webServiceTemplate.setUnmarshaller(marshaller); client.setTemplate(webServiceTemplate); } }