0

我正在使用Spring WebServiceTemplate來使用SOAP Webservice。在執行JUnit時,我面臨一個問題。
JUnit for Spring WebServiceTemplate不起作用

我的客戶類:

@Service 
public class MyWsClient extends WebServiceGatewaySupport { 

@Autowired 
private WebServiceTemplate webServiceTemplate; 

public String getData(...) throws Exception{ 
    ... 
    SampleResponse response = (SampleResponse) webServiceTemplate.marshalSendAndReceive(request); 
    ... 
    return response.getData(); 
}} 

我的測試類:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:applicationContext-junit.xml"}) 
public class MyWsClientTest { 

@Autowired 
ApplicationContext applicationContext; 

@InjectMocks 
MyWsClient myWsClient; 

private MockWebServiceServer mockServer; 

@Before 
public void init() { 
    MockitoAnnotations.initMocks(this); 
    mockServer = MockWebServiceServer.createServer(applicationContext); 
} 

@Test 
public void testGetData() throws Exception { 

    Source expectedRequestPayload = new StringSource(
      "<customerCountRequest xmlns=\"http://springframework.org/spring-ws/test\" />"); 
    Source responsePayload = new StringSource(
      "<customerCountResponse xmlns='http://springframework.org/spring-ws/test'>" 
        + "<customerCount>10</customerCount>" + "</customerCountResponse>"); 
    mockServer.expect(RequestMatchers.payload(expectedRequestPayload)).andRespond(ResponseCreators.withPayload(responsePayload)); 

    String data = myWsClient.getData(...); 
    assertNotNull(data); 
    mockServer.verify(); 
}} 

問題:
當我執行我的測試情況下,我得到的NullPointerException線路「 webServiceTemplate.marshalSendAndReceive(request)「在我的Clie中nt類。
webServiceTemplate爲空。
任何想法我做錯了什麼?

回答

0

我通過在「MyWsClient myWsClient」上將@InjectMocks更改爲@Autowired來解決它;