Как обновить XML-файл ресурсов во время выполнения
У меня есть действительный XML-файл, хранящийся в src / main / resources в моем проекте Java, этот файл используется для тестирования некоторых функций.
Я использую Cucumber и REST Assured для проверки HTTP-ответов, которые я получаю, когда недопустимые значения атрибутов содержатся в XML, который помещается в URL-адрес.
В каждом тестовом сценарии я проверяю недопустимое значение атрибута (например, строку вместо int).
На данный момент я конвертирую XML в DOM Document, присваиваю недопустимое значение (строку), затем перезаписываю исходный файл в src / main / resources.
Затем поместите XML в URL. После размещения XML-файла я заново назначаю исходное (действительное) значение XML-файлу и снова перезаписываю файл ресурсов.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда запускается второй сценарий, я думаю, что он использует неправильную версию XML.
Тесты не пройдут, если я не зайду в файл XML и не приму обновления. Есть ли способ обновить этот XML-файл во время выполнения?
//1. Retrieve the XML request file
String filePath = "C:\\filepath\\src\\main\\resources\\VALID_REQUEST.xml";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(filePath);
Node attributeToUpdate = doc.getElementsByTagName(fieldNameToUpdate).item(0);
//2. Extract/Retrieve the sourceID from the XML File, store this (will be re-installed at later stage)
String originalAttributeValue = attributeToUpdate.getTextContent();
System.out.println("Source ID before updating file: " + originalAttributeValue);
//3. Update the sourceID to be equal to the invalid Value which we are testing in this scenario
attributeToUpdate.setTextContent(invalidValueToUpdate);
String newValue = attributeToUpdate.getTextContent();
System.out.println("Source ID after updating file: " + newValue);
//4. Write the above update to the XML file (in resources)
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(filePath));
transformer.transform(source, result);
BufferedReader br = new BufferedReader(new FileReader(new File(filePath)));
String line;
StringBuilder sb = new StringBuilder();
while((line=br.readLine())!= null){
sb.append(line.trim());
}
theXMLBody = sb.toString();