2015-07-04 165 views
0

我正在写下一个Junit测试类“ServiceImplTest.java”以下方法,但它在获得null的同时尝试Marshall xmlRequest。 任何人都可以帮我解决这个问题,请。提前致谢。Junit - 嘲笑静态方法

ServiceImplTest.java

@RunWith(PowerMockRunner.class) 
@PrepareForTest({RequestXmlBuilder.class}) 
public class ServiceImplTest { 
    @Before 
    public void setUp() throws Exception { 
     PowerMockito.mockStatic(RequestXmlBuilder.class); 
    } 

    @Test 
    public void testExecute() throws Exception { 
     PowerMockito.when(RequestXmlBuilder.serviceMarshall(Request, jaxb2Marshaller)).thenReturn("XmlTest"); 
    } 
} 

ServiceImpl.java

public class ServiceImpl { 
    public Response execute() { 
     String xmlRqst = RequestXmlBuilder.serviceMarshall(request, jaxb2Marshaller); 
    } 
} 

RequestXmlBuilder.java

public class RequestXmlBuilder { 
    public static String serviceMarshall(Request request, Jaxb2Marshaller jaxb2Marshaller) 
      throws JAXBException { 
     StringWriter requestXml = new StringWriter(); 
     jaxb2Marshaller.marshal(request, new StreamResult(requestXml)); 
     return requestXml.toString(); 
    } 
} 

注意:在以下语句中获得空值

jaxb2Marshaller.marshal(request, new StreamResult(requestXml)); 
+1

可能是一个问题,在您的匹配:'PowerMockito.when(RequestXmlBuilder.serviceMarshall(任何(Request.class),任何(Jaxb2Marshaller.class)))。然后返回(“XmlTest”);'注意'import static org.mockito.Matchers.any;'你可以试试吗? – troig

+0

它很好。非常感谢你@troig – Mohan

+0

欢迎您,我已将其作为答案发布。很高兴帮助你! – troig

回答

1

您没有正确定义您的matchers。你可以通过改变它:

PowerMockito.when(RequestXmlBuilder.serviceMarshall(any(Request.class), any(Jaxb2Marshaller.class))).thenReturn("XmlTest"); 

对进口任何的Mockito匹配,具体如下:

import static org.mockito.Matchers.any; 

干杯