Потерян как лучший способ / метод при тестировании моего метода createSOAPMessage.По сути, этот класс должен делать вызов SOAP к нашей центральной базе данных и извлекать определенные данные в формате XML.Некоторые ключевые слова были изменены для защиты личности.
public class WebService {
public SOAPMessage getData(String ticketNumber) throws Exception{
//Create the SOAP Factory/Connections
SOAPConnectionFactory soapConnectionFactory;
SOAPConnection soapConnection;
//Create SOAP Connection
soapConnectionFactory = SOAPConnectionFactory.newInstance();
soapConnection = soapConnectionFactory.createConnection();
//Send SOAP Message to SOAP Server
String url = "http://blahblah.asmx";
SOAPMessage soapResponse = soapConnection.call(createSOAPMessage(ticketNumber), url);
soapConnection.close();
return soapResponse;
}
public static SOAPMessage createSOAPMessage(String ticketNumber) throws Exception {
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
String serverURI = "http://blahblah";
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody soapBody = envelope.getBody();
SOAPHeader soapHeader = envelope.getHeader();
envelope.removeNamespaceDeclaration(envelope.getPrefix());
envelope.addNamespaceDeclaration("abc", serverURI);
envelope.setPrefix("soapenv");
soapHeader.setPrefix("soapenv");
soapBody.setPrefix("soapenv");
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("Content-Type", "text/xml; charset=utf-8");
headers.addHeader("SOAPAction", "http://blahblah.net/ExtractXML");
//This String xml will contain the relevant data I am pulling from the db with specific column names. I've removed them as well for protection.
String xml = "<Title>" + "<Date>" + //you get the idea.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xml)));
Element extractElement = doc.getDocumentElement();
Element newDocumentElement = doc.createElementNS(serverURI, extractElement.getNodeName());
// Set the desired namespace and prefix
newDocumentElement.setPrefix("abc");
Element xDoc = doc.createElement("xDoc");
Element xDocElement = doc.createElementNS(serverURI, xDoc.getNodeName());
xDocElement.setPrefix("abc");
newDocumentElement.appendChild(xDocElement);
// Copy all children
NodeList list = extractElement.getChildNodes();
while (list.getLength() != 0) {
newDocumentElement.appendChild(list.item(0));
}
// Replace the original element
doc.replaceChild(newDocumentElement, extractElement);
soapBody.addDocument(doc);
soapMessage.saveChanges();
return soapMessage;
}
}
Поскольку я не вызываю метод getData внутри самого класса, мне не нужно создавать тестовые случаи для этого метода.Идея состоит в том, чтобы просто JUnit протестировать этот класс сам и создать контрольные примеры для метода createSOAPMessage.Я просто не знаю как.