Junit — насмешливый статический метод

Я пишу тестовый класс Junit "ServiceImplTest.java" для следующего метода, но он получает значение null при попытке Marshall xmlRequest. Может ли кто-нибудь помочь мне решить эту проблему, пожалуйста. Заранее спасибо.

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));

person Mohan    schedule 04.07.2015    source источник
comment
Возможно проблема в ваших сопоставителях: PowerMockito.when(RequestXmlBuilder.serviceMarshall(any(Request.class), any(Jaxb2Marshaller.class))).thenReturn("XmlTest"); Обратите внимание на import static org.mockito.Matchers.any; Не могли бы вы попробовать?   -  person troig    schedule 09.07.2015
comment
Просыпается нормально. Большое спасибо @troig   -  person Mohan    schedule 09.07.2015
comment
Добро пожаловать, я разместил это как ответ. Рад помочь вам!   -  person troig    schedule 09.07.2015
comment
Спасибо за ваш ответ @troig. Это помогло мне решить мою проблему.   -  person Mohan    schedule 09.07.2015


Ответы (1)


Вы неправильно определили свои сопоставители. Не могли бы вы изменить его на:

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

Импортируйте для Mockito любой сопоставитель следующим образом:

import static org.mockito.Matchers.any;

Ваше здоровье

person troig    schedule 09.07.2015